夺命雷公狗---Smarty NO:24 缓存控制技术1

什么是缓存技术

IE缓存:就是把请求的数据放入IE等浏览器中(客户端缓存)

HTML+CSS+JS+IMG

Smarty缓存:服务器端缓存

2、服务器缓存应用

1)减少服务器I/O

2)减少数据库服务器压力

3)减少服务器访问时间,加快反应速度

编译技术  <  缓存技术  <  静态技术(不方便管理)

3、Smarty缓存机制

  • $smarty->setCacheDir($cache_dir); //设置缓存目录(默认为cache)
  • $smarty->caching=true; //开启缓存开关
  • $smarty->cache_lifetime=3600; //设置默认生命周期

示例代码:

//初始化信息(读取数据,设置默认路径)
$smarty -> caching = true;//默认为false,如果要使用必须开启缓存开关
$smarty -> cache_lifetime = 3600;//单位为毫秒

4、缓存生命周期与缓存运行机制

1)缓存从何而来

说明:当我们删除缓存文件时,然后修改编译文件,重新访问同一页面时,系统会重新生成缓存文件,通过结果发现,缓存是由编译文件直接生成的。

2)缓存文件什么时候会自动更新

① 当缓存的生命周期过期时,系统将重新生成缓存

② 当模板发生变化时,缓存文件也会重新生成

5、缓存原理图

6、缓存的判断

1)缓存可以减少对数据库服务器的访问,减少数据库服务器的压力

通过以下方法即可解决

<?php
    header(“Content-Type:text/html;charset=utf-8″);
    require “smarty/Smarty.class.php”;
    $smarty = new Smarty();
    //初始化信息(读取数据,设置默认路径)
    $smarty -> caching = true;//默认为false,如果要使用必须开启缓存开关
    $smarty -> cache_lifetime = 3600;//单位为毫秒
    if($smarty->isCached(“demo7.html”)){
        $smarty -> display(“demo7.html”);
        exit;
    }
    echo “hello”;
    mysql_connect(“localhost”,’root’,”);
    mysql_query(“use xsphp”);
    mysql_query(‘set names utf8′);
    $sql = “select * from stu where id=100″;
    $res = mysql_query($sql);
    $row = mysql_fetch_assoc($res);
    $smarty -> assign(‘row’,$row);
    $smarty -> display(“demo7.html”);

运行以上代码可知,只有当我们第一次访问网址时,系统会输出hello,以后每次访问系统将自动转向缓存文件,从而达到减少数据库访问目的。

7、删除缓存

  • $smarty->clearCache(“tpl”):删除指定页面的缓存
  • $smarty->clearAllCache():删除所有页面的缓存

示例代码:

//定义一个函数,专门用于清理缓存,一般放置于管理系统的右上角
$smarty -> clearCache(“demo7.html”);//删除demo7页面缓存
$smarty -> clearAllCache();//删除所有缓存(管理系统右上角按钮)

8、单页面多缓存

http://localhost/20150602/demo08_cache.php?id=485

http://localhost/20150602/demo08_cache.php?id=489

http://localhost/20150602/demo08_cache.php?id=500

通过运行以上网址可知,只有当我们运行第一个页面时,系统才能正常显示,以后每次运行都自动显示第一次的执行结果。

如果解决以上问题?

答:可以通过以下方式解决(单页面多缓存)

$smarty->display(“tpl”, “cacheid”);我们可以把经常变化的变量放入display函数的第二个参数中,即可解决以上问题。

$smarty -> display(“demo7.html”,$id);

单页面多缓存一般用于内容页或详细页

时间: 2024-12-11 06:10:14

夺命雷公狗---Smarty NO:24 缓存控制技术1的相关文章

夺命雷公狗---Smarty NO:23 常用方法

assign :分配变量到模板文件(值传递) assignByRef:分配变量到模板文件(引用传递) assignByRef代码示例: $smarty = new Smarty(); $name = ‘lisi'; //$smarty -> assign(‘name’,$name); 值传递相当于把lisi复制一份发送到模板页 $smarty -> assignByRef(‘name’,$name);//引用传递,把$name变量的首地址赋值给模版页 $smarty -> display

夺命雷公狗---Smarty NO:10 foreach数组的遍历

功能:主要实现对数组的遍历输出 基本语法: foreach,foreachelse {foreach from=数组 key=键 name=名称 item=内容 } {foreachelse} {/foreach} from:要遍历输出的数组 item:每次遍历时,系统会自动将遍历的结果放入item内容中 key:键值,每次遍历时,系统会将遍历的键值放入key中 name:foreach名称,为foreach起名 foreachelse:当数组为空时,执行此句 demo4.html示例代码 <!

夺命雷公狗---Smarty NO:17 html_table函数

功能:把简单数组转化table表格 基本语法: {html_table  loop=$data  cols=4  table_attr=’border=”0″‘} 参数说明: loop:要遍历的数组 cols:每行显示多少列 table_attr:表格的属性,多个属性之间通过空格隔开 demo6.html示例代码: <!DOCTYPE html> <html> <head> <meta charset=’utf-8′> <title></t

夺命雷公狗---Smarty NO:18 html_checkboxes

功能:把数组转化为复选框 基本语法: {html_checkboxes name=’cust’  values=$cust_ids  checked=$customer_id  output=$cust_names  separator=”<br />”} 参数说明: name:为checkbox命名 values:为checkbox中的选项赋予value值,要求是一个数组 checked:选中的值,要求是一个数组 output:显示输出的文本值,要求是一个数组 separator:选项与选项

夺命雷公狗---Smarty NO:11 内建函数2(sysplugins)

1.php函数 功能:可以实现在模板页面直接输入php代码 基本语法: {php} echo date(“Y-m-d”); {/php} 在Smarty3.0中已废弃,如果想使用此功能,请载入SmartyBC.class.php demo5.html示例代码: <!DOCTYPE html> <html> <head> <meta charset=’utf-8′> <title></title> </head> <b

夺命雷公狗---Smarty NO:21 分页

在smarty里面写一个分页 demo6.php代码示例: <?php header(“Content-Type:text/html;charset=utf-8″); require “smarty/Smarty.class.php”; $smarty = new Smarty(); //连接数据库 mysql_connect(“localhost”,’root’,”); mysql_query(‘use xsphp’); mysql_query(‘set names utf8′); //读取所

夺命雷公狗---Smarty NO:19 html_options函数

功能:把数组转化为option下拉选项 基本语法: <select name=customer_id> {html_options values=$cust_ids  selected=$customer_id  output=$cust_names} </select> 参数说明: output:要遍历输出的数组 values:每一个下拉选项的value值,要求是一个数组 selected:被选中的元素,要求也是一个数组 demo6.html示例代码: <!DOCTYPE

夺命雷公狗---Smarty NO:08 if–elseif–else函数

功能:条件判断(分支) 基本语法: {if} {elseif} {else} {/if} demo4.html示例代码: <!DOCTYPE html> <html> <head> <meta charset=’utf-8′> <title></title> </head> <body> {if $i==1} 吃饭 {elseif $i==2} 读书 {elseif $i==3} 敲代码 {else} 睡觉 {

夺命雷公狗---Smarty NO:06 设计篇4 变量调节器

{$var|regex_replace:”/[\t\n]/”:””} :正则替换 {$var|replace:”aa”:”bb”} :字符替换 {$var|spacify:”^^”} :插空(在字符与字符之间插空) {$var|string_format:”%d”} :字符串格式化 %d:格式化为整数 %s :格式化字符串 {$var|strip: “*”} :去除多余的空格 {$var|strip_tags} :去除html标签 {$var|truncate:30:”…”} :截取指定长度的字