请求缓存 (cp_cache)
请求缓存在dispatcher
中, 调用具体的控制器方法之前执行
使用方法
在注释中使用 @cp_cache
指定该Action的缓存, 每次请求该Action时, 如果有缓存则直接返回缓存的内容, 方法体内部的逻辑不再执行.
namespace app\web\controllers;
use Cross\MVC\Controller;
class User extends Controller
{
/**
* 默认控制器
* @cp_params p1, p2, p3
* @cp_cache array(false, array('type'=>1, 'expire_time'=>864000))
*/
function index()
{
print_r($this->params);
}
}
配置的格式为
array(true/false, array(key=>value, key=>value...))
一, 配置开关
true
配置生效false
配置无效
该参数的值, 受cpCache
事件中匿名函数的返回值影响
二, 类型及参数
1. 使用文件缓存
格式:
array(true, array('type'=>1, 'expire_time'=>864000))`
参数:
type = 1
1
或file
(1.6.0 +)expire_time = 86400
表示缓存过期时间为多少(秒)cache_path
表示缓存文件放在web索引文件的跟目录,默认放在项目的cache/request文件夹下key_dot
缓存文件路径分隔符ignore_params (1.6.0+)
生成缓存key的时候, 是否忽略所有参数, 只保留控制器和方法名
>项目根目录下的cache目录需设置为可以读写
2. 使用memcache缓存
格式:
array(true, array('type'=>2, 'host'=>'127.0.0.1', 'port'=>11211, 'expire_time'=>30))`
参数:
type=2
2
或memcache
(1.6.0 +)host=127.0.0.1
memcache服务器hostport=11211
memcache服务器端口expire_time = 86400
缓存过期时间(秒)
3. 使用redis缓存
格式:
array(true, array('type'=>3, 'host'=>'127.0.0.1', 'db'=>3, 'port'=>6379, 'expire_time'=>864000))`
参数:
type=3
3
或redis
(1.6.0 +)host=127.0.0.1
redis服务器hostport=6379
redis服务器端口db=3
使用的db idexpire_time=864000
缓存有效期(秒)
合理的使用缓存能大幅度提高应用性能.
事件处理
在入口通过注册cpCache
事件来更细粒度的控制缓存相关参数, 具体请查看cpCache
事件处理相关文档
>使用op_cache的时候注意与注释相关参数的设置