ThinkPHP缓存

静态缓存:

要使用静态缓存功能,需要开启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目录。

时间: 2024-08-09 14:48:37

ThinkPHP缓存的相关文章

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

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

ThinkPHP 缓存技术详解 使用大S方法

如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷,假如我们把读取数据的过程分为三个层,第一个是访问层,第一个是缓存层,第三个是数据库存取层,如果没有缓存层,访问层是直接从数据库存取层读取数据,而设置缓存后,访问层不再是直接在数据库存取层读取,而是从缓存层读取数据. 我们做个简单的对比,假设一个页面,在一个小时可被访问100万次,如果这个页面每次被访问的时候,都直接读取数据库后再编译生成,在一个小时内将会重复性的生成100万次

Thinkphp 缓存和静态缓存局部缓存设置

1.S方法缓存设置 if(!$rows = S('indexBlog')){ //*$rows = S('indexBlog') $rows = D('blog')->select(); S('indexBlog',$rows,10); } $this->assign('rows',$rows); //$rows = S('indexBlog') $this->display(); 2.静态缓存 3.局部缓存

thinkphp缓存的简单使用

$cache=S('newskey'); if(!$cache){ $cache=M('news')->cache(true,60,'newskey')->where('state=1')->order('publishtime desc')->limit(5)->select(); } $this->assign('recentnews',$cache);

ThinkPHP的缓存技术

原文:ThinkPHP的缓存技术 如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷.假如我们 把读取数据的过程分为三个层,第一个是访问层,第一个是缓存层,第三个是数据库存取层.如果没有缓存层,访问层是直接从数据库存取层读取数据,而设置缓存 后,访问层不再是直接在数据库存取层读取,而是从缓存层读取数据.我们做个简单的对比,假设一个页面,在一个小时可被访问100万次,如 果这个页面每次被访问的时候,都直接读取数据库后再编译生成,

《PHP框架ThinkPHP学习》系列技术文章整理收藏

<PHP框架ThinkPHP学习>系列技术文章整理收藏 1修改ThinkPHP缓存为Memcache的方法 2Thinkphp实现MySQL读写分离操作示例 3ThinkPHP调用百度翻译类实现在线翻译 4使用ThinkPHP+Uploadify实现图片上传功能 5Thinkphp使用mongodb数据库实现多条件查询方法 6ThinkPHP实现多数据库连接的解决方法 7改写ThinkPHP的U方法使其路由下分页正常 8ThinkPHP实现将SESSION存入MYSQL的方法 9ThinkPH

30个经典问题

1.mysql优化       sql语句,字段类型( 长度的含义),存储引擎的选择,事务,索引和索引的优缺点 ,        主从同步原理, 高可用.2.HA keeepalived       mysql的双机热备http://www.linuxidc.com/Linux/2013-09/90319.htm 3.负载均衡相关: LB nginx反向代理,haproxy,lvs 4.memcahe 原理 :  高可用 :  集群使用 (一致性hash含义以及具体怎么样做) memcache

网站访问优化(二):开启apache服务器gzip压缩

昨天,把带宽从1M升级到2M,使用cdn版本的jquery之后,网站访问速度由平均5s(在禁止缓存的情况下,使用缓存大概在2.8s)下降到2.8s的样子. 今天,继续优化. 第1步:   把图片进行了压缩,70kb以上的banner用的大图,压缩成50kb左右.图片质量稍微下降了一点,没钱连高清图片都用不起,所以还是得有钱,赚钱. 第2步:  js压缩. 昨天,也用了网上下载的js/css压缩器,部署时,用压缩版本的.速度并没有明显的提升,可能是因为js和css很少,而且都比较小的缘故. 晚上,

WEB渗透测试培训班

2018最新WEB渗透测试培训班 介绍: 2012-2018这几年我们迎来大数据时代.网络环境.现在更加普及和大众化!我们不仅在生活上,工作上都正受到前所未有的挑战. 这些挑战包括:隐私泄漏.信息泄露.黑客攻击.商业间谍等.除了加强信息安全教育外,我们还要从技术上解决这类安全问题. 随着区块链思想的产生,这几年将是网络发展突破瓶颈的过渡区,所以Yuntest特意隆重推出关于网络安全方面的课程WEB安全渗透. 面向人群:WEB安全.程序员.系统运维.SEO黑白帽.群众 培训形式:多种课程为您量身定