静态缓存:
要使用静态缓存功能,需要开启HTML_CACHE_ON 参数,并且使用HTML_CACHE_RULES配置参数设置静态缓存规则文件。
静态规则的定义方式如下:
'HTML_CACHE_ON'=>true,
'HTML_CACHE_RULES'=> array(
'ActionName' => array('静态规则', '静态缓存有效期', '附加规则'),
'ModuleName(小写)' => array('静态规则', '静态缓存有效期', '附加规则'),
'ModuleName(小写):ActionName' => array('静态规则', '静态缓存有效期', '附加规则'),
'*' => array('静态规则', '静态缓存有效期', '附加规则'),
//…更多操作的静态规则
)
静态缓存文件的根目录在HTML_PATH 定义的路径下面,并且只有定义了静态规则的操作才会进行静态缓存。
静态规则是用于定义要生成的静态文件的名称。静态有效时间单位为秒,如果不定义,则会获取配置参数HTML_CACHE_TIME 的设置值,如果定义为0则表示永久缓存。附加规则通常用于对静态规则进行函数运算。
使用示例:
'HTML_CACHE_ON' => true,
'HTML_CACHE_RULES' => array(
'Show:index' => array('{:module}_{:action}_{id}',0),
);
注:缓存静态页面时若涉及到动态数据,可以使用在html代码中嵌入JavaScript代码去动态
请求数据的办法来解决。
动态缓存:
为了进一步简化缓存存取操作,ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用不同的缓存方式的时候并不需要关注具体的缓存细节。
系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式。
配置示例(修改默认缓存方式为Memcache):
'DATA_CACHE_TYPE' => 'Memcache',
'MEMCACHE_HOST' => '127.0.0.1',
'MEMCACHE_PORT' => 11211,
还可以在S方法里面显式的指定缓存方式:
S('data',$Data,3600,'File');
S方法还支持对当前的缓存方式传入缓存参数:
S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));
对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式,只需要设置
'DATA_CACHE_SUBDIR'=>true
还可以设置哈希目录的层次,例如:
'DATA_PATH_LEVEL'=>2
就可以根据缓存标识的哈希自动创建多层子目录来缓存。
S方法的使用:
S('data',$Data); // 使用data标识缓存$Data数据
S('data',$Data,3600); // 缓存$Data数据3600秒
$Data = S('data'); // 获取缓存数据
S('data',NULL); // 删除缓存数据
ThinkPHP还提供了一个专门用于文件方式的快速缓存方法F方法。F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。
F方法的使用:
F('data',$Data); // 快速缓存Data数据,默认保存在DATA_PATH目录下面
F('data',$Data,TEMP_PATH); //快速缓存Data数据,保存到指定的目录
$Data = F('data'); // 获取缓存数据
F('data',NULL); // 删除缓存数据
注:默认的动态缓存目录为Runtime下面的Temp目录。