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 相关文章推荐
多重?l件?合查?(二)
Oct 09 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
解析CodeIgniter自定义配置文件
Jun 18 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP类相关知识点实例总结
Sep 28 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 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检索或者复制远程文件的方法
2015/03/13 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python3实现的判断回文链表算法示例
2019/03/08 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
幼儿园开学寄语
2014/04/03 职场文书
买房协议书
2014/04/11 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
保姆聘用合同
2015/09/21 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
七年级数学教学反思
2016/02/17 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android