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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
PHP 全角转半角实现代码
May 16 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 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实现读取超大文件的方法
2014/07/28 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
简单谈谈json跨域
2016/03/13 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
理解Python中的With语句
2016/03/18 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
Android笔试题总结
2014/11/29 面试题
EJB实例的生命周期
2016/10/28 面试题
业务助理岗位职责
2013/11/18 职场文书
大学学风建设方案
2014/05/04 职场文书
2014年团支部工作总结
2014/11/17 职场文书
python关于集合的知识案例详解
2021/05/30 Python
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL