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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
第九节--绑定
Nov 16 PHP
php缓存技术介绍
Nov 25 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
ThinkPHP模型详解
Jul 27 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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的MySQL连接类
2013/06/07 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
jquery实现图片预加载
2015/12/25 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
前端常见跨域解决方案(全)
2017/09/19 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
python opencv之SURF算法示例
2018/02/24 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
广州迈达威.net面试题目
2012/03/10 面试题
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
精彩的推荐信范文
2013/11/26 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
学校安全工作制度
2014/01/19 职场文书
我的生日感言
2015/08/03 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
Python OpenCV之常用滤波器使用详解
2022/04/07 Python