ThinkPHP中的动态缓存(S方法)和快速缓存(F方法)

系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)

对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式。

‘DATA_CACHE_SUBDIR‘=>true

还可以设置哈希目录的层次,例如

‘DATA_PATH_LEVEL‘=>2

就可以根据缓存标识的哈希自动创建多层子目录来缓存。

S方法支持缓存有效期,在很多情况下,可能我们并不需要有效期的概念,或者使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法。
F方法只能用于缓存简单数据类型,不支持有效期和缓存对象,使用如下:

//
快速缓存Data数据,默认保存在DATA_PATH目录下面   
     F(‘data‘,$data);

//
快速缓存Data数据,保存到指定的目录

F(‘data‘,$data,TEMP_PATH);

F(‘user/data‘,$data);

//删除缓存数据

F(‘data‘,null);

//获取缓存数据

$data=F(‘data‘);

配置文件config.php

//动态缓存,缓存文件存在于
\Runtime\Temp

‘DATA_CACHE_TYPE‘=>‘file‘,

‘DATA_CACHE_TIME‘=>‘3600‘,

//‘DATA_CACHE_SUBDIR‘=>true,//开启子目录

//‘DATA_CACHE_LEVEL‘=>3,//设置子目录的层次

Action文件:

function view(){

//缓存

//$cache=Cache::getInstance(‘缓存方式‘,‘缓存参数‘);

//$cache=Cache::getInstance(‘Xcache‘,array(‘expire‘=>60));

//$cache->set(‘名字‘,‘值‘);或者$cache->name=‘值‘;

//$value=$cache->get(‘名字‘);或者$value=$cache->name;

//$cache->rm(‘名字‘);或者unset($cache->name);

//S(‘名字‘,‘数据‘,‘3600‘,‘类型‘)缓存快捷方法

$user=M(‘haodetong‘);

$value=S(‘list‘);

if(empty($value)){

$list=$user->select();

S(‘list‘,$list,3600);

echo ‘这个是直接从数据库中读取的文件‘;

dump($list);

}else{

echo ‘这个是缓存文件‘;

dump($value);

}

}

第一次访问时如下图:

再次刷新后如下图:

ThinkPHP中的动态缓存(S方法)和快速缓存(F方法)

时间: 2024-10-10 01:30:47

ThinkPHP中的动态缓存(S方法)和快速缓存(F方法)的相关文章

【转】QT中添加 动态库(.so) 和 静态库 (.a) 的方法

http://blog.csdn.net/yzj19870824/article/details/6933737 在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 添加静态库,如libtinyxml.a 则,在LIBS一行添加“/home/yzj/tinyxml/libtinyxml.a”: 在INCPATH一行添加“ -I /home/yzj/t

浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)

系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache) 对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式. 'DATA_CACHE_SUBDIR'=>true 还可以设置哈希目录的层次,例如 'DATA_PATH_LEVEL'=>2 就可以根据缓存标识的哈希自动创建多层子目录来缓存. S方法支持

ThinkPHP中F方法快速缓存实例

一般使用文件方式的缓存就能够满足要求,而thinkPHP还提供了一个专门用于文件方式的快速缓存方法F方法. 由于采用的是PHP返回方式,所以其效率较S方法较高.F方法具有如下特点:1.简单数据缓存:2.文件形式保存:3.采用PHP返回数据方式加载缓存:4.支持子目录缓存以及自动创建:5.支持删除缓存和批量删除:$path="../Public/Runtime/";$str="fastrunaaaaaaaaaaaaaaaa";F("str/ffun"

ThinkPHP的缓存 F方法

一般使用文件方式的缓存就能够满足要求,而thinkphp还提供了一个专门用于文件方式的快速缓存方法f方法. 由于采用的是php返回方式,所以其效率较s方法较高. f方法具有如下特点: 1.简单数据缓存: 2.文件形式保存: 3.采用php返回数据方式加载缓存: 4.支持子目录缓存以及自动创建: 5.支持删除缓存和批量删除: 代码如下: $path=../public/runtime/; $str=fastrunaaaaaaaaaaaaaaaa; f(str/ffun,$str,$path); 这

thinkPHP中_initialize方法实例分析

子类的_initialize方法自动调用父类的_initialize方法. 而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct(); parent::_initialize() 是调用父类的_initialize方法,如果你的父类_initialize函数没有任何内容,不需要写parent::_initialize() <?php class BaseAction extends Action { // 继承Thinkph

[转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于

ThinkPHP中实例化对象M()和D()的区别,select和find的区别

原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如

ThinkPHP中实例化对象M()和D()的区别,select和find的区别 【转】

1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于

ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象?

在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于 $Demo = M(); --------------