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设计模式 Strategy(策略模式)
Jun 26 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 PHP
PHP的几个常用加密函数
Feb 03 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
Yii 2.0如何使用页面缓存方法示例
May 23 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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 输出缓存详解
2009/06/20 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
js控制div及网页相关属性的代码
2009/12/19 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
简单谈谈json跨域
2016/03/13 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Python 正则表达式入门(中级篇)
2016/12/07 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
Python requests模块session代码实例
2020/04/14 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
python如何随机生成高强度密码
2020/08/19 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
大学生开西餐厅创业计划书
2014/02/01 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
文艺部部长竞选稿
2015/11/21 职场文书