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 相关文章推荐
拼音码表的生成
Oct 09 PHP
php 页面执行时间计算代码
Dec 04 PHP
php模板中出现空行解决方法
Mar 08 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
php常用Stream函数集介绍
Jun 24 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
PHP读取Excel类文件
May 15 PHP
PHP实现生成数据字典功能示例
May 24 PHP
PHP设计模式之命令模式示例详解
Dec 20 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python安装教程
2018/02/28 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
Django stark组件使用及原理详解
2019/08/22 Python
python中常用的数据结构介绍
2021/01/12 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
关于.NET, HTML的五个问题
2012/08/29 面试题
高校学生干部的自我评价分享
2013/11/04 职场文书
保护环境建议书
2014/03/12 职场文书
白血病捐款倡议书
2014/05/14 职场文书
咖啡店创业计划书
2014/08/15 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
详细总结Python常见的安全问题
2021/05/21 Python
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers