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 相关文章推荐
珊瑚虫IP库浅析
Feb 15 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
php中的strpos使用示例
Feb 27 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
Aug 02 PHP
php语法检查的方法总结
Jan 21 PHP
如何运行/调试你的PHP代码
Oct 23 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
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
JS类的封装及实现代码
2009/12/02 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
python单例模式的多种实现方法
2019/07/26 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
机电专业毕业生推荐信
2013/11/10 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python