Cache
NoCacheStrategy
Strategia no-op che disabilita la cache. Tutte le letture sono miss, tutte le scritture vengono ignorate. Utile per testing e debugging.
Cosa fa
NoCacheStrategy e una no-op strategy: tutte le operazioni di scrittura vengono ignorate, tutte le letture ritornano null/array vuoti. Permette di "disabilitare la cache" mantenendo il contratto ICacheStrategy — il codice client continua a funzionare senza modifiche.
Quando usarla
- Debugging — verificare che un comportamento applicativo non dipenda da entry stale in cache
- Testing — quando il test deve essere indipendente dalla cache (alternativa: mock di
CacheService) - Disabilitazione temporanea — feature flag, troubleshooting in produzione
- Endpoint sempre-fresh — quando la richiesta deve sempre andare al server (alternativa: passare
forceRefresh: trueafetchWithCache)
Differenza con
forceRefresh: NoCacheStrategy disabilita la cache a livello strategy (zero impatto memoria/IO), mentre forceRefresh bypassa la cache solo per la singola richiesta ma continua a salvare la risposta.Costruttore
class NoCacheStrategy implements ICacheStrategy {
constructor()
}
Nessun parametro.
Esempio
import { NoCacheStrategy, CacheService } from '@pzeta/postgrest'
// Disabilita cache in development con feature flag
const strategy = process.env.CACHE_DISABLED === 'true'
? new NoCacheStrategy()
: CacheStrategyFactory.createWithFallback()
const cache = CacheService.getInstance(httpClient, strategy)
Comportamento
| Metodo | Comportamento |
|---|---|
setItem(...) | No-op |
getItem(...) | Sempre null (cache miss) |
removeItem(...) | No-op |
clear(...) | No-op |
hasItem(...) | Sempre false |
getAllValues() | [] |
getAllKeys() | [] |
cleanExpired() | 0 |
getStats() | { size: 0, keys: 0, expired: 0 } |
supportsTTL() | false |
isPersistent() | false |
Tutti i metodi async sono no-op intenzionali, mantenuti per compatibilita con l'interfaccia.
Effetto sul CacheService
Con NoCacheStrategy attiva, ogni chiamata a fetchWithCache si comporta come una httpClient.request() diretta:
- Cache lookup ritorna sempre
null - Si esegue la richiesta HTTP
- La risposta viene "salvata" in cache (no-op)
- La risposta viene ritornata al chiamante
Inoltre supportsTTL() === false disabilita anche l'auto cleanup periodico (60s) del CacheService.
Vedi anche
CacheStrategyFactory—createNoCacheStrategy()MemoryCacheStrategy— alternativa volatile ma funzionaleCacheService