Přejít k obsahu

Mezipaměť

storh obsahuje malé implementace mezipaměti bez závislostí za běhu:

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
);

Vrstvy mezipaměti:

  • dekódované záznamy DocStore
  • negativní výsledky hledání chybějících záznamů
  • manifesty segmentovaného logu
  • řídké indexy segmentů

Režimy ověřování:

  • CacheValidation::STAT: ověřuje existenci, čas změny a velikost.
  • CacheValidation::HASH: ověřuje existenci, čas změny, velikost a hash obsahu.
  • CacheValidation::TRUST: při nalezení přeskočí ověření souborového systému a důvěřuje aktuální instanci storh nebo sdílené mezipaměti, která publikuje explicitní zápisy storh.

STAT je výchozí rychlý režim ověřování. Použijte HASH, pokud se při každém zásahu do mezipaměti musí ověřit také obsah souboru, včetně zápisů stejné velikosti, které zachovají čas změny. STAT nedokáže odhalit změnu obsahu mimo systém, která zachová čas změny i velikost. TRUST je nejrychlejší režim pro úlohy v jednom procesu nebo se sdílenou mezipamětí; záměrně nezjišťuje změny souborů provedené mimo storh.

Cache::memory() má omezený počet záznamů i velikost v bajtech. Pokud není zadáno maxBytes, odvodí rozpočet z PHP's memory_limit.

Cache::apcu() je volitelná. Pokud APCu není k dispozici nebo je pro aktuální SAPI vypnutá, funguje jako prázdná implementace.

Kdy ji připojit

DocStore vždy uchovává malé mezipaměti pro každou instanci pro záznamy, které již přečetla nebo zapsala, ověřené podle nakonfigurovaného režimu. Připojením backendu získáte mezipaměť, která přežije životnost instance: Cache::memory() pomáhá dlouho běžícím procesům, které znovu otevírají úložiště, a Cache::apcu() sdílí dekódované záznamy mezi požadavky PHP-FPM. Benchmarky naměřily u backendu v paměti přibližně 83 µs při chladném čtení oproti 6 µs při zahřátém zásahu ověřeném pomocí STAT.