jeremyharris / cacher
此包已被废弃,不再维护。未建议替代包。
无法获取此包最新版本(dev-master)的许可信息。
Cacher 是一个 CakePHP 插件,允许您轻松缓存查找结果
dev-master
2015-06-09 19:39 UTC
Requires
This package is not auto-updated.
Last update: 2023-05-09 00:03:29 UTC
README
Cacher
Cacher 是一个 CakePHP 插件,允许您轻松缓存查找结果。与大多数缓存查询解决方案不同,Cacher 只需要在您的模型中添加一个行为。
是否有很少改变的设置?有一个数据库列表的状态或类似的东西永远不会改变,但你仍然希望它们在数据库中?就像缓存你的结果一样?使用 Cacher!
要求
- CakePHP >= 2.0.x(检查标签以获取 CakePHP 旧版本)
使用方法
var $actsAs = array(
'Cacher.Cache'
);
默认情况下,Cacher 使用 core.php 文件中的 'default' 缓存配置。如果您想使用不同的配置,只需在 'config' 键中传递它。
var $actsAs = array(
'Cacher.Cache' => array(
'config' => 'myCacheConfiguration'
)
);
最好将 Cacher 放在行为列表的末尾,以便 Cacher 查找的查询反映先前行为可能做出的更改。
您可以传递的选项
config
要复制的现有缓存配置的名称(默认 'default')clearOnSave
是否在保存时删除缓存(默认true
)clearOnDelete
是否在删除时删除缓存(默认true
)auto
自动缓存(默认false
)gzip
自动压缩/解压缩缓存数据(默认false
)
使用 Cacher 与 Model::find()
、Controller::paginate()
等
如果将 auto 设置为 false,您可以在查询中传递一个 'cacher'
键,该键可以是 true
以缓存结果,false
以不缓存,或一个有效的 strtotime()
字符串以设置该特定调用的持续时间。
// cache the results of this query for a day
$this->Post->find('all', array(
'conditions' => array('Post.name LIKE' => '%awesome%'),
'cacher' => '+1 day'
));
// don't cache the results of this query at all
$this->Post->find('all', array(
'conditions' => array('Post.name LIKE' => '%lame%'),
'cacher' => false
));
// cache using the default settings even if auto = false
$this->Post->find('all', array(
'conditions' => array('Post.name LIKE' => '%okay i guess%'),
'cacher' => true
));
它是如何工作的
Cacher 拦截任何查找查询并临时更改数据源,以便处理缓存检查。
您始终可以使用 Behavior::detach()
或 Behavior::disable()
来禁用 Cacher。
特性
- 通过将行为附加到模型实现快速便捷的缓存
- 使用
$this->Post->clearCache()
动态清除特定模型的缓存 - 通过传递条件到
clearCache()
清除特定查询
待办事项
- 我想添加其他缓存功能,使其更全面
- 希望使缓存数据源成为一个可重用、独立的源
备注
Cacher缓存了查找的全部结果,因此某些缓存可能在父缓存之前变得过时。例如,假设你缓存了查找帖子及其所有评论的结果。如果某个评论被删除但缓存仍然存在,它将显示该评论。唯一移除它的方法是在帖子模型上使原始查询无效。一些开发者之间已经讨论过这个想法,我仍在尝试找出最佳处理方式。