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执行速度全攻略
Oct 09 PHP
php中$this-&amp;gt;含义分析
Nov 29 PHP
PHP常用技巧总结(附函数代码)
Feb 04 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP创建对象的六种方式实例总结
Jun 27 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 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中批量修改文件后缀名的函数代码
2011/10/23 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
JavaScript模拟push
2016/03/06 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
数字漫画:comiXology
2020/06/13 全球购物
作弊检讨书1000字
2014/02/01 职场文书
就业协议书的作用
2014/04/11 职场文书
学雷锋标语
2014/06/25 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
2015新年寄语大全
2014/12/08 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
大国崛起观后感
2015/06/02 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL