smarty模板里实现缓存。分页缓存在任何里都可以用

我用了三个类

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模板里实现缓存。的更多相关文章

  1. smarty模板基础3 *缓存数据*

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 < ...

  2. Smarty模板

    Smarty模板 是做什么用的?? 是将前端的显示和后台的逻辑进行分离,就相当于把前台显示的页面和后台要实现的某些功能的逻辑给分离出来了,分离在两个文件里,也就是说,前端只负责显示,后端只负责逻辑操作 ...

  3. Smarty模板引擎技术二

    Smarty模板引擎技术 内建函数 include_php内建函数 作用:载入一个php文件,将载入的文件的内容赋值给一个变量   注意:该内建函数只能在2.0中使用,如果使用的话,必须得实例化Sma ...

  4. smarty模板调数据库并做添加删除修改和分页

    smarty模板只要就是实现分离效果所以每个功能都需要两个页面一个是HTML  和 PHP  两部分组成 使用smarty模板要在main文件夹下面创建login.php文本,要用smarty模板首先 ...

  5. smarty模板做人员表信息删除,修改 里面的性别单选按钮民族下拉,另外登录进去可以显示姓名

    首先登录进去可以显示姓名 smarty模板做人员表信息删除,删除的时候有提示框确定删除吗. 修改 里面的性别单选按钮,要修改谁有默认选中,用了变量调节器 民族位置做下拉,用<{foreach}& ...

  6. smarty模板基础----缓存数据

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 1 2 ...

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

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

  8. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  9. smarty模板原理

    smarty模板原理   模板主要是用来让前端和后端分离的,前台页面只是一个前台页面,后台页面用php代码写逻辑,写完逻辑拿到前台显示. 一.写法 一般需要以下:写3个页面: 1.显示页面aa.htm ...

随机推荐

  1. 记录: 百度webuploader 分片文件上传java服务器端(spring mvc)示例的优化

    最近项目上用到文件分片上传,于是找到了百度的一个开源前端控件webuploader. 于是尝试使用. 下载下来后,它提供的服务器端示例代码是php版的,那么Java版的呢? 其实,上传文件都是按照rf ...

  2. vSphere虚拟化ESXI6.0+vclient安装部署

      知识部分:一.什么是vSphere?vSphere是VNware公司在2001年基于云计算推出的一套企业级虚拟化解决方案.核心组件为ESXi.如今,经历了5个版本的改进,已经实现了虚拟化基础架构. ...

  3. BZOJ2870—最长道路tree

    最长道路tree Description H城很大,有N个路口(从1到N编号),路口之间有N-1边,使得任意两个路口都能互相到达,这些道路的长度我们视作一样.每个路口都有很多车辆来往,所以每个路口i都 ...

  4. 转:ospf学习-----SPF最短路径算法

    ospf学习-----SPF最短路径算法 常见的路由协议比如RIP.IGRP.BGP是距离矢量协议,OSPF和ISIS是数据链路状态协议.矢量协议路由器只知道本身和与自身相连的接口路由信息,矢量图只是 ...

  5. z pre-pass 相关问题的讨论

    z pre-pass 是指在渲染流程中,第一个pass先画一张深度buffer出来,得到需要绘制的最前面这层深度,用这个在接下来的pass中做深度剔出,这样在第二个pass中会省略很多绘制. 这项技术 ...

  6. TensorFlow笔记一 :测试和TFboard使用

    一 .第一个TF python3.6 import tensorflow as tf x=2 y=3 node1=tf.add(x,y,name='node1') node2=tf.multiply ...

  7. 2016.7.14 去掉Mybatis Generator生成的一堆 example

    参考资料: http://www.cnblogs.com/zerocold/p/4220955.html   mybatis generator自动生成的代码里老是有一堆example,需要改的时候, ...

  8. 更新到mysql 5.7后解决0000-00-00日期问题

    更新到mysql 5.7后解决0000-00-00日期问题 学习了:http://www.07net01.com/2016/04/1479450.html mysql 5.7 默认开始用以下sql m ...

  9. POJ 1785 Binary Search Heap Construction (线段树)

    题目大意: 给出的东西要求建立一个堆,使得后面的数字满足堆的性质.并且字符串满足搜索序 思路分析: 用线段树的最大询问建树.在建树之前先排序,然后用中序遍历递归输出. 注意输入的时候的技巧. .. # ...

  10. (Caffe)基本类Blob,Layer,Net(一)

    本文地址:http://blog.csdn.net/mounty_fsc/article/details/51085654 Caffe中,Blob.Layer,Net,Solver是最为核心的类,下面 ...