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. LeetCode OJ-- Insertion Sort List **

    https://oj.leetcode.com/problems/insertion-sort-list/ 链表实现插入排序 首先插入排序是指: a b c d e g m 对b也就是第二个位置选做元 ...

  2. TopCoder SRM 660 Div2 Problem 1000 Powerit (积性函数)

    令$f(x) = x^{2^{k}-1}$,我们可以在$O(k)$的时间内求出$f(x)$. 如果对$1$到$n$都跑一遍这个求解过程,时间复杂度$O(kn)$,在规定时间内无法通过. 所以需要优化. ...

  3. 微信公众号开发C#系列-12、微信前端开发利器:WeUI

    1.前言 通过前面系列文章的学习与讲解,相信大家已经对微信的开发有了一个全新的认识.后端基本能够基于盛派的第三方sdk搞定大部分事宜,剩下的就是前端了.关于手机端的浏览器的兼容性问题相信一直是开发者们 ...

  4. codevs——2853 方格游戏(棋盘DP)

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解  题目描述 Description 菜菜看到了一个游戏,叫做方格游戏~ 游戏规则是这样的: 在一个n*n的 ...

  5. Akka之Circuit Breaker

    这周在项目中遇到了一个错误,就是Circuit Breaker time out.以前没有接触过,因此学习了下akka的断路器. 一.为什么使用Circuit Breaker 断路器是为了防止分布式系 ...

  6. Linux(二) 常用命令

    Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统.基于Linux有多个版本的衍生.RedHat.Ubuntu.Debianaa   安装VMware或VirtualBox虚拟机 ...

  7. Linux网络协议栈之数据包处理过程

    http://blog.csdn.net/cheng_fangang/article/details/8966242

  8. Oracle Forms Execute_Query Example To Fetch The Records From Database

    Execute_Query command is used to fetch all the records for current database data block in Oracle For ...

  9. ef SaveChanges()报"更新条目时出错,有关详细信息请参见内部异常"

    报这个错误是因为表没有设置主键,设完主键后再重新更新Entity,就可以添加了

  10. ThinkPHP3.1 模板布局

    ThinkPHP的模板引擎内置了布局模板功能支持,可以方便的实现模板布局以及布局嵌套功能.有三种布局模板的支持方式: 第一种方式:全局配置方式 这种方式仅需在项目配置文件中添加相关的布局模板配置,就可 ...