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下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
php递归遍历删除文件的方法
Apr 17 PHP
PHP消息队列用法实例分析
Feb 12 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
关于Laravel Route重定向的一个注意点
Jan 16 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
PHP正则验证Email的方法
2015/06/15 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
使用Python构建Hopfield网络的教程
2015/04/14 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python标准库之collections包的使用教程
2017/04/27 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
python如何求解两数的最大公约数
2018/09/27 Python
Python 3.8 新功能全解
2019/07/25 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
Python 随机按键模拟2小时
2020/12/30 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
Linux机考试题
2015/07/17 面试题
大学生简历中个人的自我评价
2013/10/06 职场文书
自考毕业生自我鉴定
2013/11/04 职场文书
市场营销方案范文
2014/03/11 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
员工考核评语大全
2014/04/26 职场文书