Smarty局部缓存的几种方法简介

很多时候我们在用smarty时,并不希望缓存整个页面,例如天气、股票等这类即时更新的信息。那么我们可以让其不缓存,常见的实现有如下3种方法:

1.insert 法:

Insert 函数类似于 inluce 函数,不同之处是 insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数。比如说我们定义一个显示时间的函数:

代码如下:

function insert_get_current_time() {
return date("H:i:s");
}
//然后在模板中:
{insert name="get_current_time"}

这样每次打开页面,显示的都是即时时间,而不是缓存的。注意这里的函数名一定要以insert开头,模板中的name与之对应。如果我们的函数包含一些参数,那么我们的在模板中可以这样:

代码如下:

{insert name="get_current_time" lid=#banner_location_id# sid=#site_id#}
//那么Smarty 调用该函数类似insert_get_current_time(array("lid"=>"12345","sid"=>67890"));

并将返回的结果显示在调用的位置。

2.动态block 法:

在smarty代码中:

代码如下:

function smarty_block_nocache($param,$content,$smarty)   
{
return $content;
}
$smarty->register_block('nocache','smarty_block_nocache',false);

在模板文件中:

代码如下:

<{nocache}>    //这里放不需要被缓存的内容 <{/nocache}>

3.插件block法:

 这个跟block差不多,只是我们将其以插件的形式来做。在Smarty/plugins目录下建一个文件:block.nocache.php,这里命名一定要规范,否则smarty识别不了。 内容如下:

代码如下:

function smarty_block_nocache($param,$content,$smarty)
{
return $content;
}

在模板中和上面一直,不需要被缓存的地方加上nocache就可以了!

(0)

相关推荐

  • smarty模板局部缓存方法使用示例

    在开启smarty缓存的情况下,第一次执行时会将其编译好的输出文件保存到cache目录中,然后在程序中通过smarty的is_cache()函数检测其 cache文件是否过期,如果过期会更新缓存,如果没有过期会自动调用cache文件,这样就省去了编译的过程.检测cache过期是看模板文件是否在指定的生命周期内是否更改,这里的更改是通过检测文件的最近修改时间实现的,不是通过检测模板文件内容. 防止一个模板文件的整篇都被缓存: index.php文件: 复制代码 代码如下: require('sma

  • Smarty模板引擎缓存机制详解

    本文实例讲述了Smarty模板引擎缓存机制.分享给大家供大家参考,具体如下: 首先说下smarty缓存和编译,这是两个不同的概念,编译默认情况下是启动的,而缓存机制需要人为开启,smarty编译过的文件还是php文件,所以执行的时候还是编译的,如果涉及到数据库,还是要访问数据库的所以开销也不小啦,所以需要smarty缓存来解决! 1.开启全局缓存 $smarty->cache_dir = "/caches/"; //缓存目录 $smarty->caching = true;

  • php smarty模版引擎中的缓存应用

    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_

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

    本文实例分析了PHP文件缓存smarty模板应用.分享给大家供大家参考,具体如下: 一.使用缓存 要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可. 使用cache_lefetime指定缓存生存时间,单位为秒 要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如: $smarty->display('index.tpl',$my_cache_id); 此特性可用于对不同的$_GET进行不同的缓存   二.清除缓存

  • smarty 缓存控制前的页面静态化原理

    可在display中进行设置 $smarty->display("demo.tpl",$_SERVER[REQUEST_URI])来实现一个模版有多个缓存. 既然文件已经有缓存了,我们就可以走缓存文件了,不用循环的执行连接数据库,进行查询了.用smatry中的一个函数进行判断 $smarty->iscached(demo.tpl"",",$_SERVER[REQUEST_URI])默认值为"true" 这里的模版要和disp

  • Smarty高级应用之缓存操作技巧分析

    本文实例讲述了Smarty高级应用之缓存操作技巧.分享给大家供大家参考,具体如下: smarty缓存控制 smarty提供了强大的缓存功能.但有时我们并不希望整篇文档都被缓存,而是有选择的缓存某一部分内容或某一部分内容不被缓存.例如你在页面上端使用一个带有广告条位置的模板,广告条可以包含任何HTML.图象.FLASH等混合信息. 因此这里不能使用一个静态的链接,同时我们也不希望该广告条被缓存. 这就需要在 insert 函数指定,同时需要一个函数取广告条的内容信息.smarty也提供了这种缓存控

  • PHP模板引擎Smarty的缓存使用总结

    这里我们将分析一下如何开启和使用smarty缓存,如何清除smarty缓存以及smarty的全局缓存,部分缓存,局部缓存三种缓存机制. 一.开启和使用smarty缓存 要开启smarty的缓存,只需在smarty设置参数里面将caching设为true,并指定cache_dir即可.同时设置cache_lefetime参数指定缓存生存时间(单位为秒).如果要对相同页面生成多个不同的缓存,可以在display或fetch中加入第二参数cache_id,如: 复制代码 代码如下: $smarty->

  • Smarty的配置与高级缓存技术分享

    前言 Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface. 学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件,给后台服务器减少很多负担. 下载与配置 官方下载:Smarty Download 下载完后,解

  • smarty缓存用法分析

    本文详细分析了smarty缓存的用法.分享给大家供大家参考.具体分析如下: 一开始以为smarty只是用来做一些掩饰php代码功能,但是后来才知道还有模板缓存这个强大的功能. 什么是模板缓存呢,就是我们在从数据库里面取出一些数据输出到模板的访问的时候,每一次都对数据库进行访问,但是其实每一次的数据库访问都是相同的,假如网址的流量很大,这种重复的访问完全是没有必要的,对于数据库有很大压力.smarty就提供了缓存技术,用于解决这个问题. 首先使用smarty的缓存,我们有一些要设置的: 开启缓存

  • Smarty局部缓存的几种方法简介

    很多时候我们在用smarty时,并不希望缓存整个页面,例如天气.股票等这类即时更新的信息.那么我们可以让其不缓存,常见的实现有如下3种方法: 1.insert 法: Insert 函数类似于 inluce 函数,不同之处是 insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数.比如说我们定义一个显示时间的函数: 复制代码 代码如下: function insert_get_current_time() {return date("H:i:s");} //然后在模板中:

  • Ajax解决缓存的5种方法总结(推荐)

    1.在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0″). 2.在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache"). 3.在URL后面加上一个随机数: "fresh=" + Math.random();. 4.在URL后面加上时间搓:"nowti

  • 清除浏览器缓存的几种方法总结(必看)

    关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能.但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数据.像股票类网站实时更新等,这样的网站是不要缓存的,像有的网站很少更新,有缓存还是比较好的.今天主要介绍清除缓存的几种方法. 清理网站缓存的几种方法 meta方法 //不缓存 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-

  • PHP清除缓存的几种方法总结

    PHP清除缓存的几种方法总结 现在开发的项目是用tp3.1版本的,在开发过程中我们常常会遇到页面缓存的问题(特别是html的缓存):刷新后还是旧版的数,再刷新下还是旧版数据,慢慢的开始怀疑人生了,哈哈:所以在开发过程中我们又必要每次及时清除缓存. 清除缓存的方法大概有3种(都是实际经历总结): 第一:在项目的配置文件config.php里加入下面两行代码就能避免缓存问题 'TMPL_CACHE_ON' => false,//禁止模板编译缓存 'HTML_CACHE_ON' => false,/

  • ajax局部刷新实例 (三种方法推荐)

    ajax局部刷新 <script> setInterval("refreshTime()",1000); //每格1秒刷新一次 funciton refreshTime() { var dateObj = new Date(); time.innerHTML = dateObj.toLocaleDateString(); //刷新div里面的内容 } </script> <div id=time> </div> function doRe

  • jQuery+ajax实现局部刷新的两种方法

    在项目中,经常会用到ajax,比如实现局部刷新,比如需要前后端交互等,这里呢分享局部刷新的两种方法,主要用的是ajax里面的.load(). 第一种: 当某几个页面都有相同的头部.导航.底部的时候,点击导航链接可以在几个页面中切换,此时想要的效果是点击链接后只切换内容部分,其他不再重新加载.上代码. jq-load.html: <!DOCTYPE html> <html> <head> <title>ajax局部刷新</title> </h

  • JavaScript中iframe实现局部刷新的几种方法汇总

    Iframe是一种嵌入网页的框架形式,Web页面可以通过更改嵌入的部分,达到部分内容刷新. Iframe的用法与普通的标签元素DIV类似,可以指定在页面中嵌入的位置.颜色.界面布局等 一.iframe实现局部刷新方法一 <script type="text/javascript"> $(function(){ $("#a1").click(function(){ var name= $(this).attr("name"); $(&q

  • js清除浏览器缓存的几种方法

    关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能.但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数据.像股票类网站实时更新等,这样的网站是不要缓存的,像有的网站很少更新,有缓存还是比较好的.今天主要介绍清除缓存的几种方法. 清理网站缓存的几种方法 meta方法 //不缓存 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-

  • react+django清除浏览器缓存的几种方法小结

    一. meta方法 打包好的入口index.html头部加入 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="0&

  • Android清除应用缓存的两种方法

    第一种 使用ActivityManager中的clearApplicationUserData方法,代码如下: ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); am.clearApplicationUserData(); 这种方式的问题就是不知清除cache,连带应用的data也删除了.如下图所示: 第二种 使用PackageManager中的deleteApplicationC

随机推荐