Magento中"无效"缓存的含义是什么?

loc*_*ker 18 magento

在缓存管理下的Magento管理员中,当缓存显示为无效时,它意味着什么?Magento如何知道缓存失效?特别是,我想知道HTML Block缓存.什么条件会导致此缓存显示为无效?

Mag*_*Guy 17

在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());
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

在你的模块的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>
Run Code Online (Sandbox Code Playgroud)

现在,只要在服务器上正确配置了cron,缓存就会自动更新,就像cron运行一样.

  • 我理解如何刷新缓存,当我看到它已经失效时,我会这样做.我只是不明白它是如何知道缓存已经失效的.并且相关 - 如果它知道它无效,为什么不自动刷新缓存?刷新缓存有什么风险吗? (4认同)
  • 非常糟糕的解决方案:设置刷新所有缓存的cron,每次运行时,就像禁用缓存一样......至少应检查缓存是否无效并每10/30分钟设置一次cron ... (3认同)
  • 你的答案是正确的,但你的修复是完全错误的。每 5 分钟删除一次缓存的所有内容会使网站比根本不激活任何缓存更慢。有关相关解决方法,请参阅 @WagnerBertoliniJunior 的答案。 (2认同)