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
一个简易需要注册的留言版程序
Oct 09 PHP
php中的数组操作函数整理
Aug 18 PHP
PHP注释实例技巧
Oct 03 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
PHP-redis中文文档介绍
Feb 07 PHP
ThinkPHP控制器详解
Jul 27 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
PHP队列场景以及实现代码实例详解
Feb 26 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 学习提高路线分享
2011/10/23 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
简单了解python关系(比较)运算符
2019/07/08 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
Python Django搭建网站流程图解
2020/06/13 Python
入党积极分子自我鉴定
2014/02/18 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
农业项目投资意向书
2015/05/09 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python