只是一个简单的问题:
无效的缓存是否意味着缓存没有运行?
不,只是意味着它需要刷新。
在 Magento 中,每当您对产品、静态块等进行更改时,它都会识别出数据库中的数据与缓存中的数据不同。不幸的是,Magento 没有意识到缓存数据有什么不同,只是有些不同。
您将需要进入系统 > 缓存管理并刷新无效的缓存类型。
如果您愿意,可以将其设置为自动刷新。
创建一个模块(或使用现有模块),您可以使用它来设置 cron 作业以刷新缓存。创建一个文件:{namespace}/{modulename}/Model/Observer.php
在那个文件里面:
<?php
class <namespace>_<modulename>_Model_Observer {
public function refreshCache() {
try {
$allTypes = Mage::app()->useCache();
foreach($allTypes as $type => $blah) {
Mage::app()->getCacheInstance()->cleanType($type);
}
} catch (Exception $e) {
// do something
error_log($e->getMessage());
}
}
}
在模块的 etc/config.xml 中:
<config>
...
<crontab>
<jobs>
<{modulename}_refresh_cache>
<schedule><cron_expr>* * * * *</cron_expr></schedule>
<run><model>{modulename}/observer::refreshCache</model></run>
</{modulename}_refresh_cache>
</jobs>
</crontab>
...
</config>
现在只要在您的服务器上正确配置了 cron,缓存就会自动更新,就像 cron 运行一样频繁。