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


Posted in PHP onDecember 11, 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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
php 静态变量的初始化
Nov 15 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
php除数取整示例
Apr 24 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
Nov 18 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 PHP
PHP设计模式(观察者模式)
Jul 07 PHP
php5 图片验证码实现代码
Dec 11 #PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 #PHP
一个比较简单的PHP 分页分组类
Dec 10 #PHP
PHP 采集程序中常用的函数
Dec 09 #PHP
Php 构造函数construct的前下划线是双的_
Dec 08 #PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 #PHP
PHP 用数组降低程序的时间复杂度
Dec 04 #PHP
You might like
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
新手简单了解vue
2019/05/29 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
关于Python错误重试方法总结
2021/01/03 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
成人毕业生自我鉴定
2013/10/18 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
党员教师一句话承诺
2014/05/30 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
初中生活随笔
2015/08/15 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS