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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
PHP 面向对象 final类与final方法
May 05 PHP
解析php中memcache的应用
Jun 18 PHP
php异常处理方法实例汇总
Jun 24 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
解读PHP中上传文件的处理问题
May 29 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
Mar 04 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
javascript实现动态标签云
2015/10/16 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
Python实现约瑟夫环问题的方法
2016/05/03 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
个人应聘自我评价分享
2013/11/18 职场文书
行政经理的岗位职责
2013/11/23 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python