后台:

<?php
//要求:当存在缓存文件,直接输出,不存在缓存文件,自己创建缓存,输出
//步骤:
//定义该页面存放缓存文件的路径
$filename="../../cache/cache.html";
//定义缓存有效期
$cachetime=5;
//判断是否存在缓存或是否过期
if(!file_exists($filename) || time()-filemtime($filename)>$cachetime)//现在的时间-缓存创建时间
{
//开启内存缓存--将下面执行后的页面代码存到内存
ob_start();
include ('../../init.inc.php');
include ("../../DBDA.php");
$dx=new DBDA();
$sql="select * from car";
$attr=$dx->Query($sql);
$smarty->assign("car",$attr);
$smarty->display("main.html");
//获取内存缓存里的页面代码
$content=ob_get_contents();
//将页面代码存到缓存文件里
file_put_contents($filename,$content);
//清除内存缓存并输出显示
ob_flush();
echo "#########";//代表第一次执行
}
else
{
include ($filename);//如果存在缓存,直接读取
}
//如果刷新页面没有改变的话,可能是有缓存文件,为了避免这样,需设置缓存有效期

前台:

<body>
<table border="1" width="80%" align="center" cellpadding="0" cellspacing="0">
<tr>
<th>代号</th>
<th>汽车名称</th>
<th>油耗</th>
<th>价格</th>
</tr>
<{foreach $car as $v}>
<tr>
<td><{$v[0]}></td>
<td><{$v[1]}></td>
<td><{$v[4]}></td>
<td><{$v[7]}></td>
</tr>
<{/foreach}>
</table>
</body>

分页缓存:

后台:

<?php
//分页缓存
//要求:实现每一页都缓存
//步骤:
//取当前页
$p=1;
if(!empty($_GET["page"]))
{
$p = $_GET["page"];
}
//定义缓存文件存放路径
$filename = "../../cache/cahetesta{$p}.html";
//定义缓存有效期
$cachetime=5;
//判断缓存是否存在或是否过期
if(!file_exists($filename) || time()-filemtime($filename)>$cachetime)
{
ob_start();//开启内存缓存
include("../../init.inc.php");
include("../../DBDA.php");
$db = new DBDA();
include("../../page.class.php");
$szs = "select count(*) from car";
$zs = $db->StrQuery($szs);
$page = new Page($zs,5);
$xinxi = $page->fpage();
$sql = "select * from car ".$page->limit;
$attr = $db->Query($sql); $smarty->assign("car",$attr);
$smarty->assign("xinxi",$xinxi);
$smarty->display("maina.html");
//获取内存缓存页面代码
$nr = ob_get_contents();
//将页面代码存放到缓存文件下
file_put_contents($filename,$nr);
//清除内存缓存并输出
ob_flush(); echo "##########################";//用来检查是否是第一次访问或过期与否
}
else
{
include($filename);
}

前台:

<body>
<h1>汽车信息</h1>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>汽车名称</td>
<td>油耗</td>
<td>价格</td>
</tr> <{foreach $car as $v}>
<tr>
<td><{$v[0]}></td>
<td><{$v[1]}></td>
<td><{$v[4]}></td>
<td><{$v[7]}></td>
</tr>
<{/foreach}> </table>
<div><{$xinxi}></div>
</body>

smarty缓存技术的更多相关文章

  1. Smarty缓存技术总结

    大家应该都知道合理使用缓存能有效的减轻网站的服务器压力,php Smarty作为一个非常优秀的php模板引擎,它为我们提供了非常简单而多样化的缓存操作,下面就让我们学习一下smarty缓存操作方面的一 ...

  2. Smarty的配置与高级缓存技术

    转之--http://www.cnblogs.com/-run/archive/2012/06/04/2532801.html Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user i ...

  3. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  4. php缓存技术总结

          缓存是指临时文件交换区,电脑把最常用的文件从存储器里提出来临时放在缓存里,就像把工具和材料搬上工作台一样,这样会比用时现去仓库取更方便.因为缓存往往使用的是RAM(断电即掉的非永久储存), ...

  5. PHP中九大缓存技术总结

    PHP缓存包括PHP编译缓存和PHP数据缓存两种.PHP是一种解释型语言,属于边编译边运行的那种.这种运行模式的优点是程序修改很方便,但是运行效率却很低下.PHP编译缓存针对这种情况做改进处理,使得P ...

  6. smarty模板技术

    一.什么是smarty?smarty是一个使用php写出来的模板php模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用php程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美 ...

  7. smarty详细使用教程(韩顺平smarty模板技术笔记)

    MVC是一种开发模式,强调数据的输入.处理.显示是强制分离的 Smarty使用教程1.如何配置我们的smarty解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹templates 存放模 ...

  8. 网站缓存技术(Redis、Memcached、Ehcache)

    Redis 是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等等. 分类的标准也不一,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点 ...

  9. ASP.NET Core 缓存技术 及 Nginx 缓存配置

    前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...

随机推荐

  1. 《JavaScript Ninja》之正则表达式

    正则表达式 是一个拆分字符串并查询相关信息的过程. 练习网站:JS Bin 正则表达式测试网站:Regular Expression Test Page for JavaScript 正则表达式进修 ...

  2. php中将url中的参数含有%20进行转换或解码

    我的url: .......index.php?action=search&start=12&search=star wave&orderby=categories&s ...

  3. zoj3623 Battle Ships ——完全背包?简单DP!|| 泛化背包

    link:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3623 看起来像完全背包,但是物品价值是变化的,所以很多人搞的很复 ...

  4. codeforces 192e

    link: http://codeforces.com/contest/330/problem/E /* ID: zypz4571 LANG: C++ TASK: 192e.cpp */ #inclu ...

  5. c 函数及指针学习 7

    1.结构的存储分配 1 2 printf("%d \n",sizeof(char)); printf("%d \n",sizeof(int)); int 类型为 ...

  6. 基础套接字的C#网络编程

    1.基于socket创建套接字网络连接服务端1.初始化 步骤 操作 方法 操作类 1. 创建ip ipaddress IPAddress类 2. 创建ip终结点   ipendpoint IpendP ...

  7. 20145220《Java程序设计》实验一实验报告

    *实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package ex ...

  8. N皇后回溯解法 leetcode N-Queens

    class Solution { public: vector<vector<string> > solveNQueens(int n) { vector<vector& ...

  9. HDU-5806 NanoApe Loves Sequence Ⅱ(two-pointer或二分)

    题目大意:给一个整数序列,统计<k,m>子序列的数目.<k,m>序列是满足第k大的数字不比m小的连续子序列. 题目分析:维护一个不小于m的数的个数的后缀和数组,可以枚举序列起点 ...

  10. 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke 解决办法

    增加IsHandleCreated 判断 if (this.IsHandleCreated) { this.Invoke(new EventHandler(delegate { ...... })); ...