Cache
CacheStrategyFactory
Factory statica per la creazione di tutte le strategie di cache. Espone metodi specifici, create(type, config?) dinamico e createWithFallback() con auto-fallback IndexedDB → SessionStorage → LocalStorage → Memory.
Cosa fa
CacheStrategyFactory applica il Factory Pattern per centralizzare l'instanziazione delle cinque strategie di cache. Espone tre tipologie di API:
- Metodi specifici —
createIndexedDBStrategy,createLocalStorageStrategy, ecc. - Metodo dinamico —
create(type, config?)per selezione runtime - Auto-fallback —
createWithFallback()che testa la disponibilita degli storage e ritorna il migliore disponibile
Enum CacheStrategyType
enum CacheStrategyType {
INDEXEDDB = 'indexeddb',
LOCALSTORAGE = 'localstorage',
SESSIONSTORAGE = 'sessionstorage',
MEMORY = 'memory',
NONE = 'none',
}
CacheStrategyConfig
interface CacheStrategyConfig {
dbName?: string // IndexedDB
storeName?: string // IndexedDB
prefix?: string // LocalStorage / SessionStorage
}
| Campo | Tipo | Default | Usato da |
|---|---|---|---|
dbName | string | 'pzeta_cache_db' | IndexedDB |
storeName | string | 'cache_store' | IndexedDB |
prefix | string | 'pzeta_cache_' / 'pzeta_session_cache_' | LocalStorage / SessionStorage |
Metodi specifici
static createIndexedDBStrategy(config?: CacheStrategyConfig): ICacheStrategy
static createLocalStorageStrategy(config?: CacheStrategyConfig): ICacheStrategy
static createSessionStorageStrategy(config?: CacheStrategyConfig): ICacheStrategy
static createMemoryStrategy(): ICacheStrategy
static createNoCacheStrategy(): ICacheStrategy
Ognuno instanzia la strategy corrispondente con la config (dove rilevante).
Metodo dinamico create(type, config?)
static create(type: CacheStrategyType, config?: CacheStrategyConfig): ICacheStrategy
Seleziona la strategy in base al tipo. Throw se type non riconosciuto.
import { CacheStrategyFactory, CacheStrategyType } from '@pzeta/postgrest'
const strategy = CacheStrategyFactory.create(CacheStrategyType.INDEXEDDB, {
dbName: 'my_app_cache',
})
Auto-fallback createWithFallback()
static createWithFallback(): ICacheStrategy
Modalita consigliata in produzione. Verifica in ordine la disponibilita degli storage e ritorna il migliore disponibile:
- IndexedDB (se
typeof indexedDB !== 'undefined') - SessionStorage (se
typeof sessionStorage !== 'undefined') - LocalStorage (se
typeof localStorage !== 'undefined') - Memory — ultimo fallback garantito
Esempi
Auto-fallback (consigliato)
import { CacheStrategyFactory, CacheService } from '@pzeta/postgrest'
const strategy = CacheStrategyFactory.createWithFallback()
const cache = CacheService.getInstance(httpClient, strategy)
Selezione esplicita
const strategy = CacheStrategyFactory.createIndexedDBStrategy({
dbName: 'crm_cache',
storeName: 'orders',
})
Dinamica da env
const type = (process.env.CACHE_STRATEGY ?? 'indexeddb') as CacheStrategyType
const strategy = CacheStrategyFactory.create(type)
Disabilita cache in test
import { CacheStrategyFactory } from '@pzeta/postgrest'
const strategy = process.env.NODE_ENV === 'test'
? CacheStrategyFactory.createMemoryStrategy()
: CacheStrategyFactory.createWithFallback()
Ordine di fallback — razionale
L'ordine IndexedDB → SessionStorage → LocalStorage → Memory e progettato per:
- Massimizzare capacita — IndexedDB ha capacita di ordini di grandezza superiore
- Minimizzare residui cross-sessione — SessionStorage preferito a LocalStorage tra i Web Storage (cache pulita alla chiusura tab)
- Garantire sempre un'opzione funzionante — Memory non puo fallire
Vedi anche
CacheService
Servizio singleton di cache con TTL, background refresh, request deduplication e auto cleanup. Punto di ingresso primario al caching HTTP del package.
IndexedDBCacheStrategy
Strategia di cache default basata su IndexedDB. Capacita elevata (~50MB+), persistente, async non-blocking. Ideale per produzione e dataset grandi.