Gå til indhold

Caching

storh leveres med små cachebackends og uden runtime-afhængigheder:

PHP
use Storh\Cache;
use Storh\CacheValidation;

$docs = new Storh\DocStore($root, 'pages', cache: Cache::memory(maxEntries: 10000));
$docs = new Storh\DocStore($root, 'pages', cache: Cache::apcu('storh.pages'));
$docs = new Storh\DocStore(
    $root,
    'pages',
    cache: Cache::memory(maxEntries: 100000, maxBytes: 96 * 1024 * 1024),
    cache_validation: CacheValidation::TRUST
);

Cachelag:

  • afkodede DocStore-poster
  • negative opslag for manglende poster
  • SegmentedLog-manifester
  • sparsomme segmentindekser

Valideringstilstande:

  • CacheValidation::STAT: kontrollér eksistens, mtime og størrelse.
  • CacheValidation::HASH: kontrollér eksistens, mtime, størrelse og indholdshash.
  • CacheValidation::TRUST: spring filsystemvalidering over ved cachehits, og stol på, at den aktuelle storh-instans eller en delt cachebackend offentliggør eksplicitte storh-skrivninger.

STAT er standardtilstanden for hurtig validering. Brug HASH, når hvert cachehit også skal kontrollere filindhold, herunder skrivninger af samme størrelse, der bevarer mtime. STAT kan ikke registrere en indholdsændring uden for processen, hvis både mtime og størrelse bevares. TRUST er den hurtigste tilstand til processer med én proces eller delt cache; den registrerer med vilje ikke filer, der ændres uden for storh.

Cache::memory() er begrænset af antal poster og antal bytes. Hvis maxBytes ikke angives, beregnes en grænse ud fra PHPs memory_limit.

Cache::apcu() er valgfri. Hvis APCu ikke er tilgængelig eller er deaktiveret for den aktuelle SAPI, fungerer den som en backend uden funktion.

Hvornår skal en tilføjes

DocStore har altid små cachelag pr. instans for poster, den allerede har læst eller skrevet, valideret efter den konfigurerede tilstand. Tilføjelse af en backend giver en cache, der overlever instansen: Cache::memory() hjælper langvarige processer, der genåbner lagre, og Cache::apcu() deler afkodede poster på tværs af PHP-FPM-anmodninger. Benchmarks måler memory-backenden til omkring 83 µs pr. kold læsning mod 6 µs pr. varm, STAT-valideret cacheadgang.