Cache tagy přes FileJournal?
- qvio128
- Člen | 2
Zdravím, potřeboval bych poradit nebo alespon popostrčit (jsem nový
v Nette a bezradný aktuálně :-*).
K problému:
Na webu mám novinky a pokud přidám v adminu novou novinku tak aby se
invalidovalo cache jen pouze u jedné novinky.Potřeboval bych zachovat tyto
vlastnosti:
Cache novinek se bude ukládat do složky (news/cache) podle id.
Mám něco jako tento kod, ale nefunguje..
$journal = new \Nette\Caching\Storages\FileJournal(WWW_DIR . '/../news');
$storage = new \Nette\Caching\Storages\FileStorage(WWW_DIR . '/../news/cache', $journal);
$this->cache = new \Nette\Caching\Cache($storage);
$key = "new-".$id;
// todle aby se provadelo pouze v adminu
$this->cache->clean(array(
Cache::TAGS => array($key) // jak vymazat, pouze jednu novinku?
));
// update novinky
----
// a todle ve frontu
$data = array(.....);
$novinka = $this->cache->load($key);
if($novinka === null) {
$this->cache->save($key, $data,
array(Cache::TAGS => array("news")));
}
}
Je to hrubý nastřěl..něco dělám špatně a nejspíš nechápu podstatu
jak invalidovat jen pouze jednu položku..
PS: používám starší verzi Nette [po x letech sem šel dodělat projekt
:-)], kdyžtak můžu upřesnit..
Děkuji za odpovědi.
Editoval qvio128 (25. 5. 2015 17:39)
- David Matějka
- Moderator | 6445
Pro smazani konkretniho klice slouzi metoda remove
, metoda
clean
maze dle ruznych podminek (priorita nebo tagy) a jelikoz ale
ukladas k novince pouze tag news
, nemuzes smazat del
tagu new-$id