Cache

SessionStorageCacheStrategy

Strategia di cache basata su sessionStorage. ~5-10MB, persistente solo durante la sessione del tab. Isolata per tab del browser.

Cosa fa

SessionStorageCacheStrategy persiste le entry in sessionStorage con un prefisso configurabile. Estende WebStorageCacheStrategy (logica condivisa con LocalStorage).

Caratteristiche:

  • Capacita ~5-10MB (limite browser per origin)
  • Persistenza session-only — eliminata alla chiusura del tab
  • Isolamento per tab — ogni tab ha il proprio storage separato
  • API sincrona

Quando usarla

  • Cache che si invalida al refresh tab — dati relativi alla sessione di lavoro corrente
  • Wizard multi-step — dati intermedi che non devono sopravvivere alla chiusura del tab
  • Cache utente sensibili a basso impatto — preferibile a localStorage per non lasciare residui dopo chiusura
  • Fallback intermedio tra IndexedDB e LocalStorage nella catena di createWithFallback()
E la prima scelta di fallback dopo IndexedDB in CacheStrategyFactory.createWithFallback(): minimizza i residui cross-sessione su user agent dove IndexedDB non e disponibile.

Costruttore

class SessionStorageCacheStrategy extends WebStorageCacheStrategy {
  constructor(prefix?: string)
}
ParametroTipoDefaultDescrizione
prefixstring'pzeta_session_cache_'Prefisso per le chiavi in sessionStorage

Esempio

import { SessionStorageCacheStrategy, CacheService } from '@pzeta/postgrest'

const strategy = new SessionStorageCacheStrategy()
const cache = CacheService.getInstance(httpClient, strategy)

// Le entry esistono solo finche il tab e aperto
await cache.fetchWithCache(
  { url: '/temp-data', method: 'GET' },
  'temp-data',
  600_000
)

Comportamento

Vedi WebStorageCacheStrategy per i dettagli condivisi:

  • setItem / getItem — serializzazione JSON con TTL
  • Gestione QuotaExceededError con cleanup automatico
  • supportsTTL()true
  • isPersistent()false (a differenza di LocalStorage)

Differenze rispetto a LocalStorage

AspettoLocalStorageSessionStorage
Persistenza chiusura tabSiNo
Condivisione tra tabSiNo (isolato)
isPersistent()truefalse
Prefix defaultpzeta_cache_pzeta_session_cache_

Vedi anche