smarty缓存技术

  在smarty中,缓存分为:普通缓存,单模版都缓存,局部缓存。

缓存:
1:首选打开缓存配置项:$smarty->caching=true;

2:缓存生命周期的配置选项:$smarty->cache_lifetime=整秒数

3:$smarty->is_cached('index.html')判断index.html页面是否缓存,如果缓存,避免io操作

 include('./libs/Smarty.class.php');
$smarty=new Smarty();
$conn=mysql_connect('127.0.0.1','root','');
mysql_query('use smarty_cache',$conn);
mysql_query('set nemes gbk',$conn); $smarty->caching=true;
//开启缓存
$id=$_GET['id']+0;
$sql='select * from user where id='.$id;
if(!$smarty->is_cached('index.html'))
{
$result=mysql_query($sql,$conn);
$row=mysql_fetch_assoc($result);
$smarty->assign('id',$row['id']);
$smarty->assign('name',$row['name']);
echo '走了数据库';
}
$smarty->display('index.html');

单模版,多缓存

1:缓存参数$smarty->display('index.html',$id);
2:$smarty->is_cached('index.html',$id)判断index.html页面是否缓存,通过id来判断,id可以通过拼凑,可以参考ecshop中的缓存。
原则:凡是能影响页面内容的变量,就要根据此变量cached_id

include('./libs/Smarty.class.php');
$smarty=new Smarty();
$conn=mysql_connect('127.0.0.1','root','');
mysql_query('use smarty_cache',$conn);
mysql_query('set nemes gbk',$conn); $smarty->caching=true;
//开启缓存
$id=$_GET['id']+0;
$sql='select * from user where id='.$id;
$cached_id=$id+'XX'
if(!$smarty->is_cached('index.html',$cached_id))
{
$result=mysql_query($sql,$conn);
$row=mysql_fetch_assoc($result);
$smarty->assign('id',$row['id']);
$smarty->assign('name',$row['name']);
echo '走了数据库';
}
$smarty->display('index.html',$cached_id);

3:局部缓存:
在模版中不需要缓存的地方,用{insert name='nocachedid'}来表示,那么该处最终的值就是,insert_nocachedid()函数的返回值

 <body>
这是这是一个smarty缓存技术的页面页面<br/>
{insert name=getname}
编号:{$id}&nbsp;姓名:{$name} </body>
include('./libs/Smarty.class.php');
$smarty=new Smarty();
$conn=mysql_connect('127.0.0.1','root','');
mysql_query('use smarty_cache',$conn);
mysql_query('set nemes gbk',$conn);
function insert_getname()
{ return $_SESSION['name']
}
$smarty->caching=true;
//开启缓存
$id=$_GET['id']+0;
$sql='select * from user where id='.$id;
if(!$smarty->is_cached('index.html',$id))
{
$result=mysql_query($sql,$conn);
$row=mysql_fetch_assoc($result);
$smarty->assign('id',$row['id']);
$smarty->assign('name',$row['name']);
echo '走了数据库';
}
$smarty->display('index.html',$id);

在ecshop中,用到了smarty模版技术,只能复习下smarty技术了

smarty之缓存笔记的更多相关文章

  1. smarty详细使用教程(韩顺平smarty模板技术笔记)

    MVC是一种开发模式,强调数据的输入.处理.显示是强制分离的 Smarty使用教程1.如何配置我们的smarty解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹templates 存放模 ...

  2. Smarty Caching缓存 ¥ 我要打赏

    Smarty Caching缓存 https://www.yiibai.com/smarty/smarty_caching.html https://www.w3cschool.cn/smarty/s ...

  3. smarty之缓存机制

    当smarty开启缓存时,当tpl文件内容改变时,则缓存页面会重新生成 test.php: <?php date_default_timezone_set('asia/shanghai'); h ...

  4. smarty实现缓存

    首先需要在mySmarty中添加配置信息,开启缓存,设置缓存文件存放目录,设置缓存时间缓存可以实现减少访问数据库,减轻数据库压力,访问一次数据库,形成静态页面,下次直接调用这个页面,也可以用nocac ...

  5. golang实现分布式缓存笔记(一)基于http的缓存服务

    目录 前言 cache 缓存服务接口 cache包实现 golang http包使用介绍 hello.go Redirect.go http-cache-server 实现 cacheHandler ...

  6. smarty学习——缓存

    存被用来保存一个文档的输出从而加速display()或fetch()函数的执行.如果一个函数被加进缓存,那么实际输出的内容将用缓存来代替. 缓存可让事物非常快速的执行,特别是带有长计算时间的模板.一旦 ...

  7. smarty静态缓存

    缓存能让程序访问起来更加快速,调数据库的数量变少,不能实时的跟数据库同步, 一般缓存文件都放在smarty文件下cach文件夹中: 建立缓存的PHP和HTML文件: 先编辑PHP文件来查询显示数据库当 ...

  8. 12月18日Smarty文件缓存

    缓存 做缓存的目的是为了让程序运行起来更加迅速.因为如果程序访问数据库时数据量较大,执行起来会比较慢.而且每一次刷新页面都会访问依稀数据库,然后再把数据显示在页面上. 设置缓存也有一个缺点,那就是缓存 ...

  9. smarty 内存缓存

    <?php //缓存 //定义一个该页面的缓存文件路径 $filename="../cache/mainhc.html"; //设置一个缓存时间 $time=; //判断缓存 ...

随机推荐

  1. 232. Implement Queue using Stacks,225. Implement Stack using Queues

    232. Implement Queue using Stacks Total Accepted: 27024 Total Submissions: 79793 Difficulty: Easy Im ...

  2. java的clone

    做项目时有时可能会遇到需要克隆对象的时候,因为有时候对象是直接从别的类get到的,那样引用的是一个对象,修改的话会将原先的对象也修改了. java的浅克隆,十分简单.但是只会克隆基本的数据类型,当涉及 ...

  3. Java代理模式——静态代理模式

    一:代理模式 代理模式的作用是:为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 二:代理模式设计 ...

  4. ORACLE CASE函数 .

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  5. Java Web 中 过滤器与拦截器的区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  6. Z-Stack协议中几个重要概念的理解

    1. 原语     ZigBee设备在工作时,各种不同的任务在不同的层次上执行,通过层的服务,完成所要执行的任务.每一层的服务主要完成两种功能:根据它的下层服务要求,为上层提供相应的服务:另一咱是根据 ...

  7. C#操作XML的完整例子——XmlDocument篇(转载,仅做学习之用)

    原文地址:http://www.cnblogs.com/serenatao/archive/2012/09/05/2672621.html 这是一个用c#控制台程序下,  用XmlDocument 进 ...

  8. Java琐碎知识点

    jps命令是JDK1.5提供的一条显示当前用户的所有java进程pid的指令,类似Linux上的ps命令简化版,Windows和linux/unix平台都可以用比较常用的参数:-q:只显示pid,不显 ...

  9. hdu 5562 Clarke and food(贪心)

    Problem Description Clarke is a patient with multiple personality disorder. One day, Clarke turned i ...

  10. C# 将XML转换成DataSet【转】

    XmlDocument xml = new XmlDocument();xml.LoadXml(str); //str:具有xml格式的字符串 XmlNodeReader reader = new X ...