请求缓存 (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
    1file (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
    2memcache (1.6.0 +)

  • host=127.0.0.1
    memcache服务器host

  • port=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
    3redis (1.6.0 +)

  • host=127.0.0.1
    redis服务器host

  • port=6379
    redis服务器端口

  • db=3
    使用的db id

  • expire_time=864000
    缓存有效期(秒)

合理的使用缓存能大幅度提高应用性能.

事件处理

在入口通过注册cpCache事件来更细粒度的控制缓存相关参数, 具体请查看cpCache事件处理相关文档

>使用op_cache的时候注意与注释相关参数的设置