smarty模板里实现缓存。
2017-03-08 13:31
267 查看
smarty模板里实现缓存。分页缓存在任何里都可以用
我用了三个类
huancun.PHP文件
huancun.html文件
缓存没有# 在主页面显示的是缓存在cache文件夹里的源代码
有#的时候是数据库里面的变动的文件
判断缓存文件是否存在
没有#号的时候缓存文件时存在的,如果缓存文件存在直接调用。如果缓存文件不存在从新加载缓存,从新加载缓存可以用时间戳。取文件上次修改的时间获取的是时间戳)如果上次修改文件的时间加上10大于等于当前时间就调缓存,如果小于10就走#这个页面
我用了三个类
include("../init.inc.php");//模板入口类 include("../DBDA.php");//自己写的方法1.成员变量2.返回字符串的方法
include("../page.class.php");//分页类
huancun.PHP文件
<?php $p = 1; if(!empty($_GET["page"])) { $p = $_GET["page"]; } //缓存网页放在cache文件夹里 //要把文件保存起来首先定义一个路径,需要知道这个文件夹保存的位置,路径相对于这个页面来说 $filename = "../cache/huancun{$p}.html";//缓存文件存放的位置filename $time = 10;//缓存有效期10秒 10秒一刷新在调取数据库 在执行缓存 //逻辑。如果文件存在并且在缓存时间内(取文件上次修改的时间获取的是时间戳)如果上次修改文件的时间加上10大于等于当前时间就调缓存 //判断缓存文件是否存在,如果缓存文件存在直接调用缓存,如果缓存文件不存在重新缓存。 if(file_exists($filename) && ((filemtime($filename)+$time)>= time()))//循环。判断 这句话是判断缓存有效期&& filemtime($filename)+$time>= time() { //直接调用缓存 include($filename);//如果存在直接用 } else//如果不存在说明还没有缓存过 { //重新缓存。就是从新访问数据库 ob_start();//开启缓存的方法,是开启内存的缓存,是指源代码 //访问数据库并显示出来 include("../init.inc.php"); include("../DBDA.php"); $db = new DBDA(); $sall = " select count(*) from nation ";//分页的总条数 $zts = $db->StrQuery($sall);//总条数 include("../page.class.php");//分页类 $page = new page($zts,2);//对象 条数每页显示2条 $sql = " select * from nation ".$page->limit;//他nation表 $arr = $db->Query($sql);//执行完返回二维数组 $smarty->assign("fpage",$page->fpage());//分页信息注册到变量里完了拿到前面显示 $smarty->assign("shuzu",$arr); $smarty->display("huancun.html");//链接模板页 $str = ob_get_contents();//获取内存中的缓存内容:就是源代码 file_put_contents($filename, $str); //从缓存中取内容,获取内存中的缓存内容 $atr = ob_get_contents();//返回的是。把缓存的 file_get_contents($filename,$atr);//把缓存的文件 往filename 这句意思往文件里放内容 ob_flush();//关闭内存缓存 echo "##########################################################"; } ?>
huancun.html文件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>模板页</title> </head> <body> <table width="100%" border="1" cellpadding="0" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>名称</td> <td>操作</td> </tr> <!--循环--> <{foreach $shuzu as $v}> <tr> <td><{$v[0]}></td> <td><{$v[1]}></td> <td>操作</td> </tr> <{/foreach}> </table> <div><{$fpage}></div> </body> </html>
缓存没有# 在主页面显示的是缓存在cache文件夹里的源代码
有#的时候是数据库里面的变动的文件
判断缓存文件是否存在
没有#号的时候缓存文件时存在的,如果缓存文件存在直接调用。如果缓存文件不存在从新加载缓存,从新加载缓存可以用时间戳。取文件上次修改的时间获取的是时间戳)如果上次修改文件的时间加上10大于等于当前时间就调缓存,如果小于10就走#这个页面
相关文章推荐
- 使用smarty模板或缓存实现页面静态化
- 让我迷惑的Smarty模板(编译、缓存)
- 使smarty模板速度大大提高的功能(缓存cache)
- ci文件缓存使用,可以用来实现多模板切换 改写URL辅助函数
- smarty模板中类似for的功能实现
- Smarty模板缓存应用
- php的Smarty中实现模板嵌套的方法(转)
- php实现smarty模板无限极分类的方法
- smarty模板局部缓存方法使用示例
- smarty模板局部缓存方法使用示例
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第52讲:PHP仿smarty模板的实现
- smarty 实现局部缓存
- Smarty模板实现时事信息并通过MIME mail发送
- PHP Smarty 3中实现多语言模板及标签静态化的方法
- 如何在SAE中使用smarty模板,实现MVC开发模式
- 解析smarty模板中类似for的功能实现
- smarty模板中类似for的功能实现
- Smarty 模板 insert 局部刷新不缓存功能
- html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)
- smarty实现缓存