Smarty模板保留缓存

Posted 遇事稳坐钓鱼台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Smarty模板保留缓存相关的知识,希望对你有一定的参考价值。

<?php
//缓存
//注:使用缓存需要用到这几个方法:
//(ob_start(开启内存缓存); ob_flush(清除内存缓存);)
//file_exists这个方法是判断文件是否存在
//assign("接受值");  display("传给另一个页面值");  这个方法是一对要配合着用


//定义一个该页面的缓存文件路径交给$filename
$filename = "../cache/huancun_wenjian.html";
//设置一个缓存时间
$time = 5;

//判断缓存文件是否存在

//   || 
if(!file_exists($filename) || filemtime($filename)+$time<time()){
    
    //开启内存缓存
    ob_start();
        
    include("../init.inc.php");
    include("../DBDA.php");
    $db = new DBDA();
    
    $sql = "select * from nation";
    $attr = $db->Query($sql);
    
    $smarty->assign("nation",$attr);
    $smarty->display("huancun.html");
    
    //把内存里面的内容读出来  交给$nr
    $nr = ob_get_contents();
    
    //将读到的内容存放到缓存文件
    //将内存$nr里面所有读到的内容扔到缓存文件里面去
    file_put_contents($filename,$nr);
    
    //清楚内存缓存
    ob_flush();
    
    echo "<a href=\'#\'>我是缓存我只出现一次</a>";

}else{  //如果缓存文件存在就显示缓存文件
    include($filename);
}

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>代号</td>
        <td>名称</td>
    </tr>
    <{foreach $nation as $v}>
    <tr>
        <td><{$v[0]}></td>
        <td><{$v[1]}></td>
    </tr>
    <{/foreach}>
</table>
</body>
</html>

 

 

效果图

 

刷新后走的缓存页面

 

以上是关于Smarty模板保留缓存的主要内容,如果未能解决你的问题,请参考以下文章

(13) PHP 随笔---Smarty模板引擎 缓存的高级应用 22

Smarty单模板多缓存

(12) PHP 随笔---Smarty模板引擎 单模板多缓存局部不缓存 20--21

Smarty模板引擎

Smarty 模板引擎下缓存设置

smarty模板技术