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
其他参数,如果没设置,将没有值。

  1. 缓存的类型
  2. 缓存的前缀
  3. 缓存的过期时间

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.查询赋值的过程

  1. 连接数据库
  2. new Model()
  3. 拼接sql,解析sql
  4. 查询数据

重复的步奏,浪费资源

为什么不直接缓存到文件,第二次直接读取缓存文件呢

5. 缓存文件的保存位置

runtime>
temp
data

写入的缓存保存在temp下

  1. 文件名称是加密的文件名称
  2. 文件的内容是系列化的内容

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}'),
posted @ 2017-06-01 17:32  oneboi  阅读(716)  评论(0)    收藏  举报