(1)页面缓存:整个页面全局的缓存

需要4个步骤:

①开启缓存  $smarty->caching = true;

②设置缓存的生命周期  $smarty->cache_lifetime = 3600;

③设置缓存目录  $smarty->cache_dir = ‘./cache’;

④设置只有在没有缓存的时候,再从数据库取数据

if(!$smarty->isCached(‘模板名’)){

//从数据库取数据并assign赋值

}

 (2)局部不缓存

在整个页面缓存的基础上,页面中会有一些部分是不能缓存、需要及时更新的。比如时间,股票信息等。所以这就需要控制局部不缓存。一共有4种方法:以在php文件中传递给模板一个时间戳为例:

<?php 

//省略其他代码

$smarty->assign(‘time’,time());

?>

①单标签控制

在模板的标签中使用nocache,就可以控制该标签不缓存,如下:

{$time nocache}

②nocache标签对

在{nocache}{/nocache}标签对内的区域,都可以实现不缓存

比如 {nocache}{$time1}{$time2}{/nocache}

这样,两个标签$time1和$time2都不缓存

③在assign赋值的时候控制

php中,用assign方法向模板标签赋值的时候,第一个参数是标签名,第二个参数是值,第三个参数是可选的。如果给定第三个参数为true,则表示该标签不缓存

$smarty->assign(‘time’,$time,true);

这样模板中的{$time}标签就是不缓存的

④通过insert方法得到php中对应函数的返回值

具体语法为:在模板中的{insert name=’xxx’}的标签可以得到php文件中insert_xxx()函数的返回值。

比如:模板文件中的代码:

{insert name=’time’}

php文件中的代码:

function insert_time(){

return time();

}

这样,模板标签就可以得到对应的php中函数的返回值,为一个时间戳。而使用该方法得到的值是不缓存的。

(3)单模板多缓存

举一个例子,在商品页中,会通过url传递一个id值来展示某一个具体的商品。如果还按照普通的缓存方法,缓存模板之后就不再从数据库取数据,假如现在正在访问id为5的商品,goods.php?id=5,那么缓存的模板就是id为5的商品的页面,因为不再从数据库取数据,所以当访问其他商品的时候,页面还是id为5的商品页面。这样显然是不合适的。

解决该问题的思路是为同一个模板,根据id的不同,生成不同的多个缓存文件。具体的解决办法是--》传递缓存id。

一共有3个地方需要传递缓存id:

①display展示时,根据缓存id的不同生成不同的缓存文件

$smarty->display(‘模板名’,缓存id);

②isCached判断时,明确是判断哪一个缓存id的模板

$smarty->isCached(‘模板名’,缓存id)

(具体可以去读ecshop的代码,它就是用传递缓存id的方式来进行单模板多缓存的)

③删除缓存时,见第(4)点

(4)删除缓存

$smarty->clearCache(‘模板名’,缓存id);

如果不给第二个参数-》传递缓存id,即删除该模板下的所有缓存文件

(5)强制不缓存

在已经缓存的基础上,如果出于调试的目的,进行强制不缓存,只需要如下设置就可以了

$smarty->force_cache = true;

Smarty缓存的5个知识点的更多相关文章

  1. 全面剖析Smarty缓存机制二[清除缓存方法]

    前段时间,写了一篇 Smaryt缓存机制的几种缓存方式 ,详细介绍了三种缓存方式:全局缓存.部分缓存.局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成.本来这篇早该完成,由于时间关 ...

  2. Smarty缓存技术总结

    大家应该都知道合理使用缓存能有效的减轻网站的服务器压力,php Smarty作为一个非常优秀的php模板引擎,它为我们提供了非常简单而多样化的缓存操作,下面就让我们学习一下smarty缓存操作方面的一 ...

  3. 全面剖析Smarty缓存机制一[三种缓存方式]

    今天主要全面总结下Smarty模板引擎中强大的缓存机制,缓存机制有效减少了系统对服务器的压力,而这也是很多开发者喜欢Smarty的原因之一,由于篇幅较大,便于博友阅读,这篇文章将剖析Smarty缓存的 ...

  4. php smarty 缓存和配置文件的基本使用方法

    smarty高级部分包括缓存机制和配置文件的调用 下面是代码实现: 文件一,配置文件: #全局变量 title="网站主页" content="一个网站的主体部分&quo ...

  5. smarty缓存的使用

    <?php require './smarty/Smarty.class.php'; $sm = new Smarty; //$sm->force_compile = true; $sm- ...

  6. 命名空间namespace、smarty使用(视图分离,MVC)、smarty模板语法、smarty缓存、MVC模式

    一.命名空间:namespace 命名空间 可以理解为逻辑上的使用,为了防止重名 namespace :关键字 加载:require_once();//加载一次 include_once() 申明命名 ...

  7. smarty缓存控制

    第一步初始化配置文件中设置 如果当前访问的模板有缓存就不需要连接数据库那些代码了,如果要模板局部不缓存,要写在iscache外,模板中用{nocache}

  8. smarty缓存技术

    后台: <?php //要求:当存在缓存文件,直接输出,不存在缓存文件,自己创建缓存,输出 //步骤: //定义该页面存放缓存文件的路径 $filename="../../cache/ ...

  9. smarty缓存函数

    原来在Smarty中在3.0以上版本中不在使用这个clear_all_cache(),而是以$smarty->clearAllCache(); 代替.其中$smarty->clear_ca ...

随机推荐

  1. yum源使用(转)

    一.yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由yellow dog 这一发行版的 ...

  2. zstuoj 4243 牛吃草 ——(二分+两圆交)

    这题上次补了以后忘记写博客了,现在补一下. 有两个注意点,第一是两圆相交的模板.可以通过任意一种情况手推出来. 第二是,实数二分要注意不用ans记录为妙,因为可能因为eps过小,导致ans无法进入记录 ...

  3. DEV提示控件ToolTipControl

    1.设置边框的颜色和显示箭头图标:在构造函数里面设置 public frmLogin()        {            InitializeComponent(); //设置边框颜色     ...

  4. Vue.js 动态绑定class

    Vue.js 的核心是一个响应的数据绑定系统,它允许我们在普通 HTML 模板中使用特殊的语法将 DOM “绑定”到底层数据.被绑定的DOM 将与数据保持同步,每当数据有改动,相应的DOM视图也会更新 ...

  5. SecureCRT中文乱码解决已设置UTF-8

    查看服务器编码 查看linux的编码,修改为自己需要的,本文将已UTF-8为例进行说明.修改Linux服务器的配置文件:[root@iitshare ~]# vi /etc/sysconfig/i18 ...

  6. setValuesForKeysWithDictionary 的用法

    字典的快速赋值 setValuesForKeysWithDictionary 字数918 阅读6604 评论6 喜欢32 前言 在学习解析数据的时候,我们经常是这么写的:PersonModel.h文件 ...

  7. jQuery的input 失去焦点之后,不能再获取到焦点

    今天写了一个字段唯一性校验功能,验证设备仪器编号唯一,当输入编号之后 ,点击其他,失去焦点后,后台验证唯一,有过此编号,就给出提示,重新填写. 当使用ie时候,获取焦点正常 ,但是使用火狐就获取不到焦 ...

  8. Object.create()方法的低版本兼容问题

    Object.prototype.create=(function(){ if(Object.prototype.create){return Object.prototype.create}else ...

  9. linux操作系统-memcache安装

    安装配置 1. 安装libevent # tar zxf libevent-1.4.6-stable.tar.gz # cd libevent-1.4.6-stable # ./configure # ...

  10. Phabricator部署手册

    参考:https://secure.phabricator.com/book/phabricator/article/installation_guide/ 概述 phabricator,由faceb ...