关于CakePHP中缓存的问题

时间:2010-01-19 03:28:58

标签: cakephp caching

我打算在CakePHP中使用缓存。我想知道如果我更新了表格中的数据会发生什么,CakePHP会重新缓存我的数据吗?

提前致谢!

2 个答案:

答案 0 :(得分:5)

不自动,不。

任何缓存都不会更改,直到它过期或更新它为止。这就是缓存的重点。诀窍是定义一个正确的过期时间帧和/或在想要立即反映的更改时删除/刷新缓存。

假设您有一个博客,并且您需要缓存首页,因为它每次都会收到这么多的点击并且每次都会使数据库往返会导致服务器关闭。您可以无限期地缓存页面,只要您在创建或编辑博客文章时清理缓存以强制它更新。

或者,假设您显示了不断更新的Twitter帖子列表,但由于Twitter强制更新频率限制,您无法每次刷新它们。在检查新帖子之前,您将使用限时缓存,例如10分钟。

或者,或者说,从数据库中提取信息的纯操作非常昂贵,因此您不希望每次都这样做,但您总是需要最新的数据。在这种情况下,您可以进行一个小而廉价的查询,以确定自上次缓存数据后数据是否已更改(例如,获取某个记录的modified时间戳字段),并根据此信息决定是否启动更昂贵的操作或只使用缓存数据。

具体策略取决于您的情况。

答案 1 :(得分:2)

CakePHP中有几种类型的Cache方法和缓存引擎: http://book.cakephp.org/view/156/Caching

我正在使用默认的文件缓存引擎。您可以配置要在core.php文件中缓存数据的时间。例如,我创建了一个“短”缓存和一个像这样的“长”缓存。

Cache::config('short', array(
    'engine' => 'File',
    'duration'=> '+1 hours',
    //'path' => CACHE,
    //'prefix' => 'cake_short_'
));

Cache::config('long', array(
    'engine' => 'File',
    'duration'=> '+1 week',
    'probability'=> 100,
    //'path' => CACHE . 'long' . DS,
));

因此,无论何时您想要读取或写入要缓存的数据,都可以指定此配置名称以了解缓存时间。更多信息:http://book.cakephp.org/view/767/Cache-write