Cache
LocalStorageCacheStrategy
Strategia di cache basata su localStorage. ~5-10MB, persistenza permanente, API sincrona. Utile come fallback IndexedDB per dataset piccoli.
Cosa fa
LocalStorageCacheStrategy persiste le entry in localStorage con un prefisso configurabile. Estende WebStorageCacheStrategy (logica condivisa con SessionStorage).
Caratteristiche:
- Capacita ~5-10MB (limite browser per origin)
- Persistenza permanente — sopravvive a chiusura browser e riavvio sistema
- API sincrona — letture/scritture bloccano il main thread (attenzione su payload grandi)
- Condiviso tra tab dello stesso origin
Quando usarla
- Fallback quando IndexedDB non e disponibile (browser datati, modalita private)
- Dataset piccoli — config utente, ultime preferenze, lookup table compatte
- Casi di compatibilita dove IndexedDB e bloccato da policy enterprise
Quota exceeded: con payload grandi
setItem puo lanciare QuotaExceededError. La strategy gestisce automaticamente il fallback: prova cleanExpired() e ritenta. Se anche il retry fallisce, l'errore viene silenziato con un console.warn. Per dataset > qualche MB usare IndexedDBCacheStrategy.Costruttore
class LocalStorageCacheStrategy extends WebStorageCacheStrategy {
constructor(prefix?: string)
}
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
prefix | string | 'pzeta_cache_' | Prefisso per le chiavi in localStorage. Permette di isolare cache di app diverse o aree diverse della stessa app |
Esempio
import { LocalStorageCacheStrategy, CacheService } from '@pzeta/postgrest'
// Default prefix
const strategy = new LocalStorageCacheStrategy()
// Chiavi: pzeta_cache_<key>
// Prefix custom
const crmStrategy = new LocalStorageCacheStrategy('crm_cache_')
// Chiavi: crm_cache_<key>
const cache = CacheService.getInstance(httpClient, strategy)
Comportamento
Vedi WebStorageCacheStrategy per i dettagli condivisi:
setItem— serializza conJSON.stringify, gestisceQuotaExceededErrorgetItem— parse JSON, verifica scadenza, rimuove entry corrotteclear(prefix?)— itera le chiavi con prefix interno, filtra ulteriormente perkeyPrefixse passatocleanExpired()— itera, elimina entry scadute o corrottesupportsTTL()—trueisPersistent()—true
Vedi anche
CacheStrategyFactory—createLocalStorageStrategy(config?)WebStorageCacheStrategy— classe baseIndexedDBCacheStrategy— alternativa per dataset grandiSessionStorageCacheStrategy— variante session-only
IndexedDBStore
Wrapper low-level type-safe sopra IndexedDB con operazioni CRUD asincrone, transazioni gestite e supporto indici secondari. Usato internamente da IndexedDBCacheStrategy.
MemoryCacheStrategy
Strategia di cache in-memory via Map<string, CacheItem>. Velocissima, non persistente. Ideale per development, test e SSR.