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实现的MySQL数据浏览器
Mar 11 PHP
Smarty Foreach 使用说明
Mar 23 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
PHP异常处理浅析
May 12 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 PHP
form自动提交实例讲解
Jul 10 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP的mysqli_ssl_set()函数讲解
Jan 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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
php实现通过ftp上传文件
2015/06/19 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
python实现飞机大战
2018/09/11 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
python中有关时间日期格式转换问题
2019/12/25 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
药剂专业自荐信范文
2014/04/16 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
房产遗嘱范本
2015/08/06 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript