PHP文件缓存smarty模板应用实例分析


Posted in PHP onFebruary 26, 2016

本文实例分析了PHP文件缓存smarty模板应用。分享给大家供大家参考,具体如下:

一、使用缓存

要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可.
使用cache_lefetime指定缓存生存时间,单位为秒
要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如:

$smarty->display('index.tpl',$my_cache_id);

此特性可用于对不同的$_GET进行不同的缓存
 
二、清除缓存

clear_all_cache();//清除所有缓存
clear_cache('index.tpl');//清除index.tpl的缓存
clear_cache('index.tpl',cache_id);//清除指定id的缓存

三、使用自定义缓存方式

设置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来压缩和解压
 
四、局部关闭缓存

要在某些区域使缓存失效(只对需要的缓存),有几种方法:

insert:

定义一个insert标签要使用的处理函数,函数名格式为:insert_xx(array $params, object &$smarty)其中的xx是insert的name,也就是说,如果你定义的函数为insert_abc,则模板中使用方法为{insert name='abc'}

参数通过$params传入

也可以做成insert插件,文件名命名为:insert.xx.php,函数命名为:smarty_insert_aa($params,&$smarty),xx定义同上

register_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}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
destoon常用的安全设置概述
Jun 21 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 #PHP
PHP实现根据时间戳获取周几的方法
Feb 26 #PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 #PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 #PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 #PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 #PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 #PHP
You might like
php学习笔记之基础知识
2014/11/08 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
Python中字典映射类型的学习教程
2015/08/20 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
Python类型转换的魔术方法详解
2020/12/23 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
影视动画专业个人的自我评价
2013/12/31 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
暑期培训班策划方案
2014/08/26 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
预备党员转正材料
2014/12/19 职场文书
求职自我评价范文
2015/03/09 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
Golang并发操作中常见的读写锁详析
2021/08/30 Golang