【问题标题】:CakePHP: Caching does not workCakePHP:缓存不起作用
【发布时间】:2012-09-01 18:27:25
【问题描述】:

我遇到以下问题:我的 cakephp 应用程序没有正确处理缓存。正如谷歌的每个结果所建议的那样,我在模型中创建了一个函数来手动删除缓存:

public function afterSave($created) {
    Cache::clear();
    clearCache();
}

不幸的是,这无济于事。没有删除任何东西,我仍然有问题。

如果我没有正确解释自己,我将举例说明会发生什么:

我使用浏览器转到一个页面,该页面显示了我数据库中最后 5 条记录的列表。然后我去添加另一条记录。我回到显示最后 5 个的页面,并且信息没有更新。它使用缓存并返回过时的信息。如果我按 F5,那么他的页面 trully 会重新加载,我会看到 trully 的最后 5 条记录。

就是这样,我不知道该怎么办。整个应用像垃圾一样工作,因为你做了一些事情,除非你用 F5 刷新页面,否则它永远不会出现,这当然是用户不知道的,导致他们认为实际上是“没有添加任何内容”。

【问题讨论】:

  • 保存后有没有查看对应缓存文件的修改日期,看是否更新了??然后按 F5??
  • 我从来没有碰过缓存的东西。这是蛋糕默认处理。我这样做是为了解决问题:在控制器中,在 beforefilter 函数中我做了一个检查,如果 'action' == 'whatever' --> disableCache 它完成了这项工作。我现在选择的动作没有缓存,一切正常。
  • mmmm...这种行为听起来很少见。您应该将其作为答案发布并接受。
  • 我无法回答我的问题,因为我基本上是个菜鸟(网站说)。
  • 我这样做是为了解决这个问题:在控制器中,在 beforefilter 函数中我做了一个检查,如果 'action' == 'whatever' --> disableCache 它完成了这项工作。您选择的操作不会有浏览器缓存。 function beforeFilter(){ if ($this->action == 'youraction'){ $this->disableCache(); } //您的操作是您不希望/不需要浏览器缓存的操作 }

标签: cakephp caching


【解决方案1】:

Cache::clear() 只会清除已过期的条目。

试试Cache::clear(FALSE)。如果你有 CakePHP 2.x 就可以工作。

【讨论】:

    【解决方案2】:

    我这样做是为了解决问题:在控制器中,在 beforefilter 函数中我做了一个检查,如果动作是我禁用缓存的东西。

    您选择的操作不会有浏览器缓存。

    function beforeFilter(){
        if ($this->action == 'youraction'){
           $this->disableCache();
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用缓存需要大量思考,在哪里使用,哪里不使用。如果您的更新频繁,请不要在此处使用缓存。

      我们在数据很少变化的地方使用缓存,此时这是双赢的局面。

      Cache::clear($check, $config = 'default')

      销毁缓存配置的所有缓存值。

      cakephp Caching

      【讨论】:

        猜你喜欢
        • 2011-10-25
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 2013-08-31
        • 2015-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多