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 操作调试的方法
Jul 12 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
php rsa加密解密使用详解
Jan 14 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
Laravel Reponse响应客户端示例详解
Sep 03 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
PHP 文件上传全攻略
2010/04/28 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
jquery操作select大全
2014/04/25 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
解析vue中的$mount
2017/12/21 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
Python定义一个函数的方法
2020/06/15 Python
python3处理word文档实例分析
2020/12/01 Python
一套带答案的C++笔试题
2014/01/10 面试题
大专生工程监理求职信
2013/10/04 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
奖学金个人总结
2015/03/04 职场文书
会议通知格式范文
2015/04/15 职场文书
太行山上观后感
2015/06/05 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
Python基础之元类详解
2021/04/29 Python
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
win10搭建配置ftp服务器的方法
2022/08/05 Servers