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 xml实例 留言本
Mar 20 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
基础的WordPress插件制作教程
Nov 24 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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
Terran魔法科技
2020/03/14 星际争霸
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
Javascript中神奇的this
2016/01/20 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
简述JS控制台的使用
2018/07/15 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
Python3.2模拟实现webqq登录
2016/02/15 Python
python如何实现视频转代码视频
2019/06/17 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python中操作文件的模块的方法总结
2021/02/04 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
中学运动会广播稿
2014/01/19 职场文书
品牌宣传方案
2014/03/21 职场文书
奥林匹克的口号
2014/06/13 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
营销经理工作检讨书
2014/11/03 职场文书
质量保证书格式模板
2015/02/27 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python