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 相关文章推荐
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
php 定界符格式引起的错误
May 24 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
使用PHP编写发红包程序
Jul 22 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
php文件上传类完整实例
May 14 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP实现git部署的方法教程
Dec 19 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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 数组的创建、调用和更新实现代码
2009/03/09 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
JavaScript 创建对象
2009/07/17 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
JS实现简易计算器
2020/02/14 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
Python创建xml的方法
2015/03/10 Python
Python计算回文数的方法
2015/03/11 Python
详解Python中break语句的用法
2015/05/14 Python
python3 flask实现文件上传功能
2020/03/20 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
学院领导推荐信
2013/10/30 职场文书
写求职信有什么意义
2014/02/17 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
会计人员岗位职责
2014/03/19 职场文书
促销活动总结怎么写
2014/06/25 职场文书
雷锋观后感
2015/06/10 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android