imsamurai / cakephp-caching-behavior

如果您想使用缓存包裹模型方法,请使用它。

1.0.0 2014-02-07 14:59 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:35:05 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License

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() 返回一个使用魔法方法和缓存的对象包装器。因此,如果过期日期合适,并且您使用相同的参数和相同的缓存配置调用相同的缓存方法,则模型方法只调用一次。