0

只是一个简单的问题:

无效的缓存是否意味着缓存没有运行?

4

1 回答 1

4

不,只是意味着它需要刷新。

在 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 运行一样频繁。

于 2012-09-27T01:56:39.127 回答