Memorare în cache
storh include backend-uri mici de cache și nu are dependențe la execuție:
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
);
Straturi de cache:
- înregistrări DocStore decodate
- căutări negative pentru înregistrări inexistente
- manifestele jurnalelor segmentate
- indexuri sparse pentru segmente
Moduri de validare:
CacheValidation::STAT: validează existența, mtime și dimensiunea.CacheValidation::HASH: validează existența, mtime, dimensiunea și hash-ul conținutului.CacheValidation::TRUST: omite validarea sistemului de fișiere la accesările din cache și are încredere că instanța storh curentă sau un backend de cache partajat publică scrierile explicite storh
STAT este modul implicit de validare rapidă. Folosiți HASH când fiecare accesare din cache trebuie să valideze și conținutul fișierelor, inclusiv scrierile de aceeași dimensiune care păstrează mtime.
STAT nu poate detecta o modificare de conținut făcută în afara sistemului care păstrează atât mtime, cât și dimensiunea. TRUST este modul cel mai rapid pentru procese individuale sau sarcini cu cache partajat; intenționat, nu detectează fișierele modificate în afara storh.
Cache::memory() este limitat atât după numărul de intrări, cât și după octeți. Dacă maxBytes nu este furnizat, bugetul este calculat în funcție de PHP memory_limit.
Cache::apcu() este opțional. Dacă APCu nu este disponibil sau este dezactivat pentru SAPI-ul curent, funcționează ca backend fără operații.
Când să atașați un backend
DocStore păstrează întotdeauna cache-uri mici pentru fiecare instanță, pentru înregistrările pe care le-a citit sau scris deja, validate conform modului configurat. Atașarea unui backend adaugă un cache care persistă mai mult decât instanța: Cache::memory() ajută procesele de lungă durată care redeschid stocări, iar Cache::apcu() partajează înregistrările decodate între solicitările PHP-FPM. Benchmarkurile măsoară backendul de memorie la aproximativ 83 µs pentru o citire la rece, față de 6 µs pentru o accesare la cald, validată prin STAT.