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 if 想到的些问题
Mar 22 PHP
php 执行系统命令的方法
Jul 07 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
PHP以json或xml格式返回请求数据的方法
May 31 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字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
Python时间的精准正则匹配方法分析
2017/08/17 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
python wsgiref源码解析
2021/02/06 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
历史教育专业个人求职信
2013/12/13 职场文书
教师教学评估方案
2014/05/09 职场文书
车辆委托书范本
2014/10/05 职场文书
2014年党员整改措施
2014/10/24 职场文书
校本研修个人总结
2015/02/28 职场文书
党支部考察意见范文
2015/06/02 职场文书
2015元旦感言
2015/12/09 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python