Cache se dle tagů neinvaliduje
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- wise
- Člen | 161
Ahoj,
narazil jsem na problém při invalidaci cache podle tagů.
Když v cleanu použiju Cache::ALL => TRUE
, tak se
invaliduje, ale to samozřejmě nechci.
Pro testování jsem si udělal následující úsek kódu, dle kterého by se měla vždy nově vytvořit cache. Ale nestane se tak, stále mám data v cache.
Dělám něco špatně?
<?php
$this->cache->clean([
Cache::TAGS => ['Admin.Channels']
]);
$data = $this->cache->load('Admin.Channels.getChannels', function() use ($my) {
return $this->getChannelsData($my);
}, [
Cache::EXPIRE => '+ 20 minutes',
Cache::SLIDING => TRUE,
Cache::TAGS => ['Admin.Channels']
]);
?>
Díky.
Editoval wise (31. 10. 2013 17:02)
- jiri.pudil
- Nette Blogger | 1032
Podívej se do API
docky, jaké parametry přijímá metoda load()
. Já tam
žádný třetí nevidím.
- leninzprahy
- Člen | 150
Přesně tak, funkce load()
třetí parametr nemá.
Řešením je
$data = $this->cache->load('Admin.Channels.getChannels', function(& $dp) use ($my) {
$dp = [
Cache::EXPIRE => '+ 20 minutes',
Cache::SLIDING => TRUE,
Cache::TAGS => ['Admin.Channels']
];
return $this->getChannelsData($my);
});
Třetí parametr jsem tam chtěl, viz pull request, ale prý je stávající řešení lepší.