在项目中,合理的使用缓存对性能有较大的帮助。ThinkPHP提供了方便的缓存方式,包括数据缓存、静态缓存和查询缓存等,支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache在内的动态数据缓存类型,以及17813.html">可定制的静态缓存规则,并提供了快捷方法进行存取操作。
数据缓存
在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,3.1版本推荐的数据缓存方法是cache方法,基本的用法是:
1 缓存初始化
cache(
array('type'=>'xcache','expire'=>60));缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是:
expire 缓存有效期(时间为秒) prefix 缓存标识前缀 type 缓存类型
核心版本只有">File缓存方式的支持,其他的缓存方式支持需要下载单独的缓存驱动,并放入系统目录的Extend/Driver/Cache/下面,否则会出现不支持缓存类型的错误提示。有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:
cache(array('type'=>'memcache','host'=>'
192.168.1.10','port'=>'11
211','prefix'=>'think','expire'=>60));对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。
2 缓存设置
cache('a',$value);会按照缓存初始化时候的参数进行缓存数据,也可以在缓存设置的时候改变参数,例如: cache('a',$value,300);// 缓存数据300秒甚至改变之前的缓存方式或者更多的参数: cache('a',$value,array('type'=>'file','expire'=>300));// 采用文件方式缓存数据300秒如果你在缓存设置的时候采用上面的数组方式传入参数的话,会影响到后面的缓存存取。
3 缓存读取
$value = cache('a');缓存读取的是
前面缓存设置的值,这个值会受缓存初始化或者缓存设置的时候传入的参数影响。
如果缓存标识不存在或者已
经过期,则返回false,否则返回缓存值。
4 缓存删除
删除缓存标识为name的缓存数据。
如果要切换缓存方式,可以再次进行缓存初始化操作或者使用下面的方式: 如果你设置了缓存前缀的话,对应的缓存操作只是对应该缓存前缀标识的,不会影响其他的缓存。
数据缓存可以支持缓存队列,简单的说就是可以限制缓存的数量,只需要在初始化的时候指定length参数:
cache(array('type'=>'xcache','length'=>100,'expire'=>60));设置了length参数后,系统只会缓存最近的100条缓存数据。