Ich versuche, den Block, der das Menü anzeigt (z. B. ein Modul von Cmssmart_megamenu), zwischenzuspeichern.Magento-Cache - Regel, Cache zu bereinigen
Die Vorgängerversion war:
<block type="megamenu/navigation" name="catalog.topnav.megamenu">
<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>
</block>
So der Autor explicetly wurde deaktivieren Cache. Ich habe die 2 unsetData entfernt und eine _construct() -Methode in der Cmsmart_Megamenu_Block_Navigation-Klasse hinzugefügt.
class Cmsmart_Megamenu_Block_Navigation extends Mage_Catalog_Block_Navigation
{
protected function _construct()
$this->addData(array(
'cache_lifetime' => 86400,
'cache_key' => "my_key_mega_menu",
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Cms_Model_Block::CACHE_TAG)
));
Es klingt wie es funktioniert, kann ich die Cache-Datei sehen: mage --- 8ea_MY_KEY_MEGA_MENU. in Var/Cache. Allerdings verschwindet es innerhalb von einer Minute aus dem Cache. Eigentlich sobald der nächste Cron startet (es ist jede mn geplant)
Ich habe Aoe-template_hint und ich kann eine grüne Box für diesen Block sehen, was bedeutet, dass es im Cache gespeichert ist, mit auch die Lebensdauer richtig auf 86400 eingestellt, so Was ist los mit dir?
das ist mein erster Versuch, was denkst du ist hier falsch? Gibt es eine andere Regel als die Dauer für das Ablaufen einer Datei? Vielleicht gibt es einen versteckten Link zu einem anderen Block, der früher abläuft? ein Cache von weniger als 1 Mio. ist sowieso seltsam ...
Hinweis: Ich habe das gleiche Problem unter Windows oder Linux, und mit oder ohne Redis
dank
Haben Sie versucht, mit einem Cache-Tag total erfunden?Etwas aus heiterem Himmel wie eine Zeichenfolge 'my_own_cache_tag', nur um sicher zu sein, dass es tatsächlich keinen Cron gibt, der auf der Grundlage des Core-Cache-Tags, das Sie dort verwenden, eine Bereinigung durchführt? –
ja ich tat, das gleiche gilt – Rod
haben versucht, override 'public function toHtml()' und das Hinzufügen eines 'echo 'cache_lifetime ist:'. $ this-> getCacheLifetime(); return elter :: toHtml(); 'Dort? Zwei Dinge sollten passieren: Wenn der Cache kalt ist (nicht erstellt), sollte er die cache_lifetime wiedergeben, die Sie in Ihrem Konstrukt angegeben haben. Wenn der Cache aufgebaut ist (warm), sollte er keine cache_lifetime enthalten. –