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 相关文章推荐
PHP批量生成缩略图的代码
Jul 19 PHP
php $_ENV为空的原因分析
Jun 01 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
php生成高清缩略图实例详解
Dec 07 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 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配置文件中最常用四个ini函数
2007/03/19 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
跟老齐学Python之for循环语句
2014/10/02 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
详细分析python3的reduce函数
2017/12/05 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
Java如何格式化日期
2012/08/07 面试题
设计毕业生简历中的自我评价
2013/10/01 职场文书
办公室文秘岗位职责
2013/11/15 职场文书
高中打架检讨书
2014/02/13 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
社区消防工作实施方案
2014/03/21 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
团队队名口号大全
2014/06/06 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python