我正在使用CakePHP 1.3并尝试为视图页面启用缓存,缓存系统正常工作并缓存所有页面。但是当我们添加一个新帖子(向数据库插入新记录)或编辑旧帖子(更新表的记录)时,CakePHP会删除所有缓存的页面,而不仅仅是已编辑的页面!
app / config / core.php:
Cache::config('default', array('engine' => 'File','duration' => 8640000));
app / controllers / articles_controller.php:
var $helpers = array('Cache');
var $cacheAction = array(
'view' => array('duration' => 8640000),
'latest' => array('duration' => 8640000),
);
如何告诉Cake只删除已更改页面的缓存版本而不是所有缓存页面?
答案 0 :(得分:1)
这实际上非常难,所以我不能只给你一段代码来解决这个问题。您需要编辑管理缓存的lib文件夹中的实际cake文件。注意:这是超级蛋糕人不推荐的。但是lib/Cake/Cache/Engine/FileEngine.php
是具有文件引擎操作的文件。您似乎对删除功能感兴趣:
/**
* Delete a key from the cache
*
* @param string $key Identifier for the data
* @return boolean True if the value was successfully deleted, false if it didn't exist or couldn't be removed
*/
public function delete($key) {
if ($this->_setKey($key) === false || !$this->_init) {
return false;
}
$path = $this->_File->getRealPath();
$this->_File = null;
//@codingStandardsIgnoreStart
return @unlink($path);
//@codingStandardsIgnoreEnd
}
此外,您可以添加自己的文件引擎,并通过移动代码并将代码扩展到那里(在开源中非常酷),而不是编辑核心蛋糕文件,并使用蛋糕引擎的分离。
通过阅读用于实现文件缓存引擎的代码,您也可以找到实际的解决方案。祝你好运。