imsamurai / cakephp-caching-behavior
如果您想使用缓存包裹模型方法,请使用它。
1.0.0
2014-02-07 14:59 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-28 15:35:05 UTC
README
CakePHP 2.1+ 的缓存行为
如果您想使用缓存包裹模型方法,请使用它。例如,对于一些输出值在一段时间内不能改变的重型模型方法,但需要频繁调用的情况,可以使用这个功能。
安装
cd my_cake_app/app
git clone git://github.com/imsamurai/cakephp-caching-behavior.git Plugin/Caching
或者如果您使用git作为子模块
cd my_cake_app
git submodule add "git://github.com/imsamurai/cakephp-caching-behavior.git" "app/Plugin/Caching"
然后在 Config/bootstrap.php 中添加插件加载
CakePlugin::load('Caching');
配置
将行为附加到模型
public $actsAs = array(
'Caching.Caching' => array(
'cache' => <valid cache config or name>, // optional
'cachedObject' => <name of object class> // optional
)
);
如果配置中未指定缓存,且使用了方法 cache()
,则使用 'default' 缓存配置。默认情况下,'cachedObject' 使用存储在 Lib 文件夹中的 'Caching.CachedObject'。您可以使用自己的类,该类必须在应用或插件的 Lib 文件夹中。但请记住,您的类必须具有相同的接口。
用法
在将行为附加到您的模型后,您可以这样做(假设您的模型有 something()
和 somethingElse()
方法)
$Model->cached()->something(/*args*/);
或者
$Model->cached(/*cache name*/)->something(/*args*/);
或者
$CachedModel = $Model->cached(/*cache name or empty*/);
$CachedModel->something(/*args*/);
$CachedModel->somethingElse(/*args*/);
$Model->cached()
返回一个使用魔法方法和缓存的对象包装器。因此,如果过期日期合适,并且您使用相同的参数和相同的缓存配置调用相同的缓存方法,则模型方法只调用一次。