此包已被废弃,不再维护。未建议替代包。
无法获取此包最新版本(dev-master)的许可信息。

Cacher 是一个 CakePHP 插件,允许您轻松缓存查找结果

安装量: 8,784

依赖者: 1

建议者: 0

安全: 0

星星: 49

关注者: 5

分支: 13

公开问题: 3

类型:cakephp-plugin

dev-master 2015-06-09 19:39 UTC

This package is not auto-updated.

Last update: 2023-05-09 00:03:29 UTC


README

build status

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缓存了查找的全部结果,因此某些缓存可能在父缓存之前变得过时。例如,假设你缓存了查找帖子及其所有评论的结果。如果某个评论被删除但缓存仍然存在,它将显示该评论。唯一移除它的方法是在帖子模型上使原始查询无效。一些开发者之间已经讨论过这个想法,我仍在尝试找出最佳处理方式。