php smarty模版引擎中的缓存应用


Posted in PHP onDecember 02, 2009

1,Smarty缓存的配置:

$smarty->cache-dir="目录名"; //创建缓存目录名 
$smarty->caching=true; //开启缓存,为false的时候缓存无效 
$smarty->cache_lifetime=60; //缓存时间,单位是秒

2,Smarty缓存的使用与清除
$marty->display("cache.tpl",cache_id); //创建带ID的缓存 
$marty->clear_all_cache(); //清楚所有缓存 
$marty->clear_cache("index.php"); //清楚index.php中的缓存 
$marty->clear_cache("index.php',cache_id); //清楚index.php中指定ID的缓存

3,Smarty的局部缓存
第一个: insert_函数默认是不缓存,这个属性是不能修改
使用方法:例子
index.php中,
function insert_get_time(){
return date("Y-m-d H:m:s");
}
index.html中,
{insert name="get_time"}

第二个: smarty_block
定义一个block:smarty_block_name($params,$content, &$smarty){return $content;} //name表示区域名
注册block:$smarty->register_block('name', 'smarty_block_name', false); //第三参数false表示该区域不被缓存
模板写法:{name}内容{/name}
写成block插件:
1)定义一件插件函数:block.cacheless.php,放在smarty的plugins目录
block.cacheless.php的内容如下:
<?php
function smarty_block_cacheless($param, $content, &$smarty) {
return $content;
}
?>
2) 编写程序及模板
示例程序:testCacheLess.php
<?php
include('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display('cache.tpl');
?>
所用的模板:cache.tpl
已经缓存的:{$smarty.now}<br>
{cacheless}
没有缓存的:{$smarty.now}
{/cacheless}
4自定义缓存
设置cache_handler_func使用自定义的函数处理缓存
如:
$smarty->cache_handler_func = "myCache";
function myCache($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null){
}
该函数的一般是根椐$action来判断缓存当前操作:
switch($action){
case "read"://读取缓存内容
case "write"://写入缓存
case "clear"://清空
}
一般使用md5($tpl_file.$cache_id.$compile_id)作为唯一的cache_id
如果需要,可使用gzcompress和gzuncompress来压缩和解压

PHP 相关文章推荐
joomla内置的表单验证功能使用方法
Jun 11 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
php简单实现多语言切换的方法
May 09 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
PHP加密技术的简单实现
Sep 04 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
PHP快速推送微信模板消息
Apr 14 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
php中数组最简单的使用方法
Dec 27 PHP
php 一元分词算法
Nov 30 #PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 #PHP
php读取html并截取字符串的简单代码
Nov 30 #PHP
php 获取客户端的真实ip
Nov 30 #PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 #PHP
php中$this-&amp;gt;含义分析
Nov 29 #PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 #PHP
You might like
php 生成WML页面方法详解
2009/08/09 PHP
php 正则匹配函数体
2009/08/25 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
详解js闭包
2014/09/02 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
Python多线程爬虫简单示例
2016/03/04 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
正隆泰信息技术有限公司上机题
2012/06/14 面试题
社会实践心得体会
2014/01/03 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
个人四风问题整改措施
2014/10/24 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
安全教育培训心得体会
2016/01/15 职场文书
小学二年级语文教学反思
2016/03/03 职场文书