首页 后端开发 php教程 php smarty 缓存施用

php smarty 缓存施用

Jun 13, 2016 pm 01:03 PM
Block cache null smarty

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来压缩和解压

?

四、局部关闭缓存


要在某些区域使缓存失效(只对需要的缓存),有几种方法:
inser:
定 义一个inser标签要使用的处理函数,函数名格式为: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 的内容如下:

function smarty_block_cacheless($param, $content, &$smarty) {
return $content;
}
?>

2) 编写程序及模板
示例程序:testCacheLess.php

include('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display('cache.tpl');
?>


所用的模 板:cache.tpl

已经缓存的:{$smarty.now}

{cacheless}
没有缓 存的:{$smarty.now}
{/cacheless}

现在运行一下,发现是不起作用的,两行内容都被缓存了
3)改写Smarty_Compiler.class.php(注:该文件很重 要,请先备份,以在必要时恢复)
查找$this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true); //我的在705行
修改成:
if($tag_command == 'cacheless') $this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, false);
else $this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true);

你也可以直接将原句的最后一个参数改成false,我对smarty的内部机制不太了解,所以加了一个判断,只要block是 cacheless的才不作缓存

4)OK,现在清除template_c里的编译文件,重新运行,起作用了吧?

?

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Moondrop 发布 Block 真无线耳机,具有低延迟游戏模式 Moondrop 发布 Block 真无线耳机,具有低延迟游戏模式 Aug 10, 2024 pm 03:31 PM

Moondrop 为音频爱好者发布了 Block 真无线耳机,可舒适地佩戴在外耳中。与塞入耳道的耳塞不同,Block 不会造成耳朵堵塞的感觉或积聚耳垢。随附 13 毫米驱动器

入职后,我才明白什么叫Cache 入职后,我才明白什么叫Cache Jul 31, 2023 pm 04:03 PM

事情其实是这样的,当时领导交给我一个perf硬件性能监视的任务,在使用perf的过程中,输入命令perf list,我看到了以下信息:我的任务就要让这些cache事件能够正常计数,但关键是,我根本不知道这些misses、loads是什么意思。

使用cache可以提高计算机运行速度这是因为什么 使用cache可以提高计算机运行速度这是因为什么 Dec 09, 2020 am 11:28 AM

使用cache可以提高计算机运行速度这是因为Cache缩短了CPU的等待时间。Cache是位于CPU和主存储器DRAM之间,规模较小,但速度很高的存储器。Cache的功能是提高CPU数据输入输出的速率;Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善。

c语言中null和NULL的区别是什么 c语言中null和NULL的区别是什么 Sep 22, 2023 am 11:48 AM

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

undefined和null是什么意思 undefined和null是什么意思 Nov 20, 2023 pm 02:39 PM

在JavaScript 中,undefined和null都代表着“无”的概念:1、undefined 表示一个未初始化的变量或一个不存在的属性,当声明了一个变量但没有对其赋值时,这个变量的值就是undefined,访问对象中不存在的属性时,返回的值也是undefined;2、null表示一个空的对象引用,在某些情况下,可以将对象的引用设置为null,以便释放其占用的内存。

cache、rom、ram的特点是什么 cache、rom、ram的特点是什么 Aug 26, 2022 pm 04:05 PM

cache的特点:在CPU与主存储器之间设置的一个一级或两级高速小容量存储器,其信息是随着计算机的断电自然丢失。ROM的特点:只能从存储器中读数据,而不能往里写信息,计算机断电后数据仍然存在。ram的特点:既可以从存储器中读数据,也可以往存储器中写信息;用于存放运行程序所需的命令、程序和数据等;计算机断电后信息自然丢失。

cache是什么存储器? cache是什么存储器? Nov 25, 2022 am 11:48 AM

cache叫做高速缓冲存储器,是介于中央处理器和主存储器之间的高速小容量存储器,一般由高速SRAM构成;这种局部存储器是面向CPU的,引入它是为减小或消除CPU与内存之间的速度差异对系统性能带来的影响。Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善。

nginx反向代理缓存教程。 nginx反向代理缓存教程。 Feb 18, 2024 pm 04:48 PM

以下是nginx反向代理缓存的教程:安装nginx:sudoaptupdatesudoaptinstallnginx配置反向代理:打开nginx配置文件:sudonano/etc/nginx/nginx.conf在http块中添加以下配置来启用缓存:http{...proxy_cache_path/var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

See all articles