一、使用缓存
要开启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 的内容如下:
<?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}
{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里的编译文件,重新运行,起作用了吧?
相关推荐
使用Smarty缓存时,只需在模板文件中添加`{cache}`标签,例如`{cache id='uniqueCacheId'}...{/cache}`,其中的`id`用于唯一标识缓存。缓存内容会自动保存,并在下一次请求时直接使用,无需重新生成。清除缓存可以...
//缓存时间2、Smarty缓存的使用和清除 $smarty->display('cache.tpl', cache_id); //创建带ID的缓存 $smarty->clear_all_cache(); //清除所有缓存 $smarty->clear_cache('index.htm'); //清除index.tpl的缓存...
2、Smarty缓存的使用和清除 $smarty->display('cache.tpl', cache_id); //创建带ID的缓存 $smarty->clear_all_cache(); //清除所有缓存 $smarty->clear_cache('index.htm'); //清除index.tpl的缓存 $...
标题中的“PHP100视频教程30:PHP模板引擎Smarty缓存应用”是指一系列针对初学者和进阶者的PHP编程教程,其中的第30讲重点讲解了PHP的 Smarty 模板引擎以及其在缓存应用上的实现。Smarty 是一个广泛使用的PHP模板...
### Smarty缓存部分参考知识点 #### 一、使用缓存 在使用Smarty模板引擎时,启用缓存功能是一项重要的优化措施。为了启动缓存机制,首先需要设置`$smarty->caching = true;`,这将告诉Smarty是否开启缓存功能。...
在Smarty 2.6.26版本中,局部缓存功能是提高网站性能的重要手段,尤其对于频繁变动的数据部分。本文将详细介绍两种局部缓存方法以及如何自定义生成静态文件。 ### 一、Smarty的局部缓存 #### 1. `{cached}` 指令 ...
Smarty是一个广泛使用的PHP模板...同时,SMARTY缓存也提供了方便的调试选项以及与其他缓存系统配合使用的灵活性,使其成为许多PHP开发者的首选模板引擎之一。希望本文所介绍的内容能对大家在PHP程序设计时有所帮助。
### 一、开启和使用Smarty缓存 要启用Smarty的缓存功能,首先需要在初始化Smarty对象时设置相关参数。在配置文件或脚本中,可以这样设置: ```php $smarty = new Smarty(); $smarty->caching = true; // 开启缓存 ...
Smarty是一个流行的PHP模板引擎,它的主要目标是将呈现逻辑与业务逻辑分离,使得开发者可以更加专注于后端代码,而设计师可以自由地使用HTML和CSS来构建页面布局。本手册是Smarty的中文使用指南,旨在帮助中文用户更...
### PHP Smarty 最新版使用手册概览 Smarty是PHP的一个模板引擎,由Monte Ohrt和Uwe Tews共同开发,其最新稳定版本提供了强大的功能,包括语法配置、标签使用、自定义方法等,旨在简化前端设计与后端逻辑的分离,...
本讲将引导我们入门Smarty,理解其核心概念,并掌握基本的使用方法。 ### 1. Smarty介绍及其优缺点 **Smarty** 是一个强大的PHP模板系统,它通过引入模板和业务逻辑的分离,提高了代码的可维护性和开发效率。主要...
在PHP和Smarty框架中,构建一个新闻列表页面是常见的任务,这涉及到动态数据的获取、模板引擎的使用以及HTML静态页面的生成。接下来,我们将详细探讨这个过程。 首先,我们需要理解PHP作为服务器端脚本语言的角色。...
2. **缓存机制**:Smarty支持缓存功能,可以将处理后的模板结果存储起来,当相同的数据再次请求时,直接从缓存中读取,减少服务器的计算负担,提高页面响应速度。 3. **变量和函数**:Smarty提供了丰富的内置函数和...
3. **缓存机制**:Smarty具有内置的缓存功能,可以提高页面的加载速度。开发者可以设置缓存时间,当指定时间内数据未发生变化时,直接从缓存中读取,避免重复处理。 4. **配置选项**:Smarty提供了丰富的配置选项,...
2. **高效的缓存机制**:Smarty支持内置的缓存机制,这意味着对于已经编译好的页面,如果模版没有变化,则不需要再次编译,从而大大提升了性能。 3. **强大的功能**:除了基本的变量赋值外,Smarty还支持各种复杂的...
10. **最佳实践**:使用Smarty时,应遵循最佳实践,如保持模板简洁,避免在模板中写复杂逻辑,充分利用缓存等,以提升开发效率和应用性能。 这个中文版手册将详细解释上述知识点,并提供实例说明,帮助读者快速上手...
标题中的“linux+php+smarty模板的例子.zip”表明这是一个关于在Linux操作系统中使用PHP和Smarty模板引擎进行Web开发的示例项目。Smarty是PHP的一种流行模板技术,它将业务逻辑与视图层分离,使开发者可以更专注于...
PHP是一种广泛使用的开源脚本语言,特别适合于Web开发,可以嵌入到HTML中使用。在构建网站时,为了提高开发效率和代码复用性,开发者通常会选用一种框架来组织和管理项目。在这个名为“php 网站框架(smarty组件)”...
Smarty是一个广泛使用的PHP模板引擎,它将业务逻辑与呈现逻辑分离,使得PHP开发者可以更方便地管理和维护Web应用的前端。在PHP开发中, Smarty提供了一种方式,让程序员和设计师能够各自专注于他们的专业领域,...
通过分析和实践这个"php+smarty简单的程序",初学者不仅可以掌握Smarty模板引擎的使用,还能深化对PHP MVC(Model-View-Controller)架构的理解,为后续的Web开发打下坚实基础。同时,这个项目也可以帮助初学者熟悉...