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 相关文章推荐
动态生成gif格式的图像要注意?
Oct 09 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
Yii2框架自定义类统一处理url操作示例
May 25 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
PHP实现递归的三种方法
Jul 04 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
浅谈javascript 函数内部属性
2015/01/21 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
浅谈Express异步进化史
2017/09/09 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
vue中如何使用ztree
2018/02/06 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
js实现时间日期校验
2020/05/26 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python制作抖音代码舞
2019/04/07 Python
解决Python使用列表副本的问题
2019/12/19 Python
Python 去除字符串中指定字符串
2020/03/05 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
python音频处理的示例详解
2020/12/23 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
挂职思想汇报
2013/12/31 职场文书
总经理司机岗位职责
2014/02/06 职场文书
青年教师培训方案
2014/02/06 职场文书
英语老师推荐信
2014/02/26 职场文书
2015年新学期寄语
2015/02/26 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis