ThinkPHP静态缓存简单配置和使用方法详解


Posted in PHP onMarch 23, 2016

本文实例讲述了ThinkPHP静态缓存简单配置和使用方法。分享给大家供大家参考,具体如下:

根据ThinkPHP官方手册:ThinkPHP内置了静态缓存类,通过静态缓存规则定义来实现了可配置的静态缓存。

启用静态缓存:

ThinkPHP官方手册写道

要使用静态缓存功能,需要开启HTML_CACHE_ON 参数,并且在项目配置目录下面增加静态缓存规则文件 htmls.php,两者缺一不可。否则静态缓存不会生效。

在配置文件Conf\config.php的array()中加上:

'HTML_CACHE_ON' => true,//开启静态缓存
'HTML_PATH' => '__APP__/html',//静态缓存文件目录,HTML_PATH可任意设置,此处设为当前项目下新建的html目录

静态规则定义:

ThinkPHP官方手册写道

静态规则的定义有三种方式:

Return Array(
'ActionName'=>array('静态规则','静态缓存有效期','附加规则'), //第一种
'ModuleName:ActionName'=>array('静态规则','静态缓存有效期','附加规则'),//第二种
'*'=>array('静态规则','静态缓存有效期','附加规则'),//第三种
…更多操作的静态规则
)

第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为:

'read'=>array('{id}','60')

其中,{id} 表示取$_GET['id'] 为静态缓存文件名,第二个参数表示缓存60秒。

第二种是定义某个模块的操作的静态规则,例如,我们需要定义Blog模块的read操作进行静态缓存

'Blog:read'=>array('{id}',-1)

第三种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如

'*'=>array('{$_SERVER.REQUEST_URI|md5}')
//根据当前的URL进行缓存。

我这里在静态缓存规则文件 htmls.php中写:

<?php
return array(
'getHtml' => array('{:action}', -1),//-1表示永久缓存
);
?>

上面的静态缓存规则表示定义所有的getHtml操作的静态规则为:

'getHtml'=>array('{:action}',-1)

{:action}表示当前操作名为静态缓存文件名。

同样在\Lib\Action\IndexAction.class.php文件中写:

<?php
class IndexAction extends Action{
  //在当前项目的html目录下生成getHtml.shtml
  public function getHtml() {
   header('Content-type:text/html;charset=utf-8');
   $this->assign('title', '生成html文件');
   $this->assign('info', '生成html文件');
   $this->display();
  }
}
?>

在\Tpl\default\index\getHtml.html中写:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <title>{$title}</title>
 </head>
 <body>
  <h2>{$info}</h2>
 </body>
</html>

然后在浏览器中输入:http://127.0.0.1/myApp/index.php/index/getHtml,可看到预期的页面。

刷新页面后,浏览器地址栏会发生变化,如下:

ThinkPHP静态缓存简单配置和使用方法详解

ps:如果用的apache,firefox和opera可能会不支持shtml文件,可以在httpd.conf文件中找到"AddType text/html .shtml","AddOutputFilter INCLUDES .shtml",分别去掉前面的"#"即可。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
ThinkPHP分页实例
Oct 15 PHP
php while循环控制的简单实例
May 30 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
YII框架批量插入数据的方法
Mar 18 PHP
详解php实现页面静态化原理
Jun 21 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 #PHP
ThinkPHP项目分组配置方法分析
Mar 23 #PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 #PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 #PHP
ThinkPHP路由机制简介
Mar 23 #PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 #PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 #PHP
You might like
php 字符串函数收集
2010/03/29 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
爬虫利器Puppeteer实战
2019/01/09 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
go语言计算两个时间的时间差方法
2015/03/13 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
django之session与分页(实例讲解)
2017/11/13 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
Python 从相对路径下import的方法
2018/12/04 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Python2与Python3的区别详解
2020/02/09 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python实现简单俄罗斯方块
2020/03/13 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
机电一体化毕业生求职信
2013/11/02 职场文书
交通安全横幅标语
2014/10/07 职场文书
摘录式读书笔记
2015/07/01 职场文书
股东协议书范本2016
2016/03/21 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL