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: true a fetchWithCache)
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

MetodoComportamento
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:

  1. Cache lookup ritorna sempre null
  2. Si esegue la richiesta HTTP
  3. La risposta viene "salvata" in cache (no-op)
  4. La risposta viene ritornata al chiamante

Inoltre supportsTTL() === false disabilita anche l'auto cleanup periodico (60s) del CacheService.

Vedi anche