Cache

Třída Cache vám zajistí profesionální cachování vašich dat. Začněte vytvořením instance. Jako parametry contructoru můžete zadat, zda má byt cache zaplá (defaultně true) a dále cestu k jejímu úložišti (defaultně ./temp).

Pokud vypnete cache, bude se objekt chovat plně funkčně, ale veškeré cache, kterou budete chtít přečíst, bude označena za nevalidní. Tohoto chování využijte zvláště pokud ladíte nějakou aplikaci, abyste nemuseli cache stále ručně mazat.

Ukládání a čtení dat je řešeno klasicky pomocí metod set a get. Třída také implementuje access-array, takže můžete o objektu přistupovat jako k poli.

$cache = new Cache;
$cache['var'] = "cachovatelný obsah";

if (isset($cache['var']) # je cache s klicem 'var' validní?
    echo $cache['var'];

Validitu cache zkontrolujete pomocí metody isCached. V příkladu je isset na array-access právě překládám jako volání této metody. Pokud je cache nevalidní a voláte přímo metodu get, bude navráceno null.

Metodu set ovšem využijete mnohem častěji než array-access přístup. Díky této metodě můžete nastavit různé podmínky pro validitu cache. Prvním parametrem metody je název klíče, pak obsah cache a dále pole, které obsahuje tyto podmínky. Pole může obsahovat následující klíče:

  • sliding – pokud je tento parametr tru, do klíče expires nepředáváte timestamp, ale pouze počet sekund, po kterou má být cache platná od posledního přístupu, za poslední přístup se považuje i čtení z této cache
  • expires – předejte timestmap, do kdy má být cache platná
  • tags – tagovaní – jednoduše otagujte svoje klíče; pak jednoduše můžete smazat vše, co má stejný tag
  • priority – číslo, pomocí kterého můžete nastavovat priority, pak můžete jednoduše mazat soubory s nižší prioritou
  • files – seznam souborů, pokud se změní soubor, cache se znevalidní
# uložíme do cache, planost 60 sekund a posunuje se čtením
$cache->set('key', 'cached value', array(
    'sliding' => true,
    'expires' => 60,
    'tags' => 'muj-tag',
    'priority' => 8,
));


$cache->clean(array('priority' => 4)); # nesmaze key
$cache->clean(array('tags' => 'test')); # nesmaze key

$cache->clean(array('priority' => 8)); # smaze key
$cache->clean(array('tags' => 'muj-tag')); # smaze key

Soubory v cache mažeme pomoci metody clean, předáváme ji pole s podmínkami cache, kterou chceme smazat.

Stejné podmínky můžeme předat metodě isCached. Pokud ovšem cache v této metodě podmínkám nevyhoví, nic není smazáno.