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实现mysql数据库备份类
Mar 20 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP实现百度人脸识别
May 06 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
2013/10/01 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
js实现批量删除功能
2020/08/27 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Python占用的内存优化教程
2019/07/28 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
保险专业大专生求职信
2013/10/26 职场文书
客服服务心得体会
2013/12/30 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
海弦WR-800F
2022/04/05 无线电
Python保存并浏览用户的历史记录
2022/04/29 Python