thinkphp 缓存笔记
1. thinkphp缓存
缓存类Cache和S()方法
在ThinkPHP 中,有一个专门处理缓存的类:Cache.class.php。而我们使用的时候,
并不需要直接声明它,直接使用一个大S()方法即可。
缓存类型
系统目前已经支持的缓存类型包括:Apachenote、Apc、Db、Eaccelerator、File、
Memcache、Redis、Shmop、Sqlite、Wincache 和Xcache。
默认的缓存: 文件缓存
如果不初始化,会默认使用 File 文件缓存
2.缓存初始化和默认设置
初始化的方法为:
S(array(
'type'=>'memcache',
'host'=>'127.0.0.1',
'port'=>'11211',
'prefix'=>'think',
'expire'=>60
));
PS:如果不初始化的化,将使用默认配置使用。
type 的默认设置为:C('DATA_CACHE_TYPE'); //File
prefix 的默认设置为:C('DATA_CACHE_PREFIX'); //无
expire 的默认设置为:C('DATA_CACHE_TIME'); //0
其他参数,如果没设置,将没有值。
- 缓存的类型
- 缓存的前缀
- 缓存的过期时间
3.系统级缓存配置
/* 数据缓存设置 */
'DATA_CACHE_TIME' => 0, // 数据缓存有效期 0表示永久缓存
'DATA_CACHE_COMPRESS' => false, // 数据缓存是否压缩缓存
'DATA_CACHE_CHECK' => false, // 数据缓存是否校验缓存
'DATA_CACHE_PREFIX' => '', // 缓存前缀
'DATA_CACHE_TYPE' => 'File', // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
'DATA_CACHE_PATH' => TEMP_PATH,// 缓存路径设置 (仅对File方式缓存有效)
'DATA_CACHE_KEY' => '', // 缓存文件KEY (仅对File方式缓存有效)
'DATA_CACHE_SUBDIR' => false, // 使用子目录缓存 (自动根据缓存标识的哈希创建子目录)
'DATA_PATH_LEVEL' => 1, // 子目录缓存级别
4.查询赋值的过程
- 连接数据库
- new Model()
- 拼接sql,解析sql
- 查询数据
重复的步奏,浪费资源
为什么不直接缓存到文件,第二次直接读取缓存文件呢
5. 缓存文件的保存位置
runtime>
temp
data
写入的缓存保存在temp下
- 文件名称是
加密的文件名称 - 文件的内容是
系列化的内容
6.数据缓存
6.1 写缓存:S
S('list', $list);
S('list', $user, 30);
6.2 读缓存
S('list')
6.3 清空缓存
//删除缓存
S('list', null);
7.快速缓存(不过期的文件缓存)
如果不想设置有效期存储,可以使用大F()方法的快速缓存
7.1写
F('list', $list)
放在data文件夹下面,缓存文件名称没有加密,缓存内容被序列化
修改文件夹为Temp
F('list', $list, TEMP_PATH)
7.2 读
F('list')
7.3 删
F('list', null);
8.查询缓存
对于及时性要求不高的数据查询,我们可以使用查询缓存功能来提高性能。
//查询SQL后缓存
$list = $user->cache(true)->select();
//指定缓存的Key会更加高效
$list = $user->cache('cache_user')->select();
//可以设定过期时间和其他缓存方式
$list = $user->cache('cache_user', 10, 'xcache')->select();
PS:如果没有安装xcache 缓存,则会报错。而过期时间,必须关闭调试模式方可有效。
//获取缓存
var_dump(S('cache_user'));
//删除缓存
S('cache_user', null);
9.静态缓存
所谓静态缓存,就是第一次访问PHP 时生成一个纯静态文件。当第二次访问时,就直
接访问这个静态文件。特别适合类似于CMS 系统这种页面状态变化较少的程序。
9.1需要配置
//开启静态缓存
'HTML_CACHE_ON'=>true,
//全局缓存时间60秒
'HTML_CACHE_TIME'=>60,
//缓存的后缀
'HTML_FILE_SUFFIX'=>'.html',
//缓存规则
'HTML_CACHE_RULES'=>array(
//控制器:方法//模块_控制器_方法_ID,局部60秒
'User:index'=>array('{:module}_{:controller}_{:action}_{id}',
60),
),
除了上面的缓存规则,还有其他的缓存规格选择:
9.2 缓存规则
//方法名
'index'=>array('{id}', 60),
//控制器: //User目录下的方法_ID
'User:'=>array('User/{:action}_{id}', 60),
//控制器名:方法名
'User:index'=>array('{id}', 60),
//将当前地址加密作为文件名
'*'=>array('{$_SERVER.REQUEST_URI|md5}'),

浙公网安备 33010602011771号