【PHP】静态缓存简单应用
来源:互联网 发布:ubuntu查看当前目录 编辑:程序博客网 时间:2024/05/29 16:55
制作缓存的目的是为了让我们的页面运行更加快速,减少读取数据库内容的次数,给用户更好的体验,为此我们可以使自己的程序做一下缓存,并且设置一个缓存过期的时间,来保证与数据库的一致,当然并不是所有的程序都适合做缓存,这里简单介绍一下php静态缓存制作的方法:
1.首先我们要定好一个缓存文件存放的位置,即存放目录
例如我这里存放在cache目录下,将来所有的缓存文件都放到该目录下
2.在要做静态缓存的页面,我们定义一个变量来存放一个缓存文件的路径(相对于当前页面的路径)
$filename = "./cache/test.html";
3.定义一个变量来存储缓存过期时间
$cachetime = 5;
4.判断一下,缓存文件是否存在或者是否过期,如果缓存文件不存在就执行源代码生成缓存,或者时间过期了也应该重新缓存一下,如果上述条件不满足则调用缓存页面显示。
if(!file_exists($filename) || filemtime($filename)+$cachetime<time()){ //缓存页面代码}else{ include($filename);//如果存在,调用缓存文件}
5.生成缓存,在页面输出内容之前,我们调用ob_start()方法打开内存缓冲区,将要输出的内容放到内存里面。
ob_start();
6.在页面输出完之后,将内存中获取到的内容保存下来,存为一个静态页面。
//从内存缓存中获取页面代码$content = ob_get_contents();//将获取到的内容存放到缓存文件file_put_contents($filename,$content);//清掉内存缓存ob_flush();
7.最后我们加上一段输出,来测试是否重新缓存了,如果页面有输出该内容代表重新生成了缓存文件,如果没有,说明是直接读的缓存文件
echo "######################################"; //测试是否调用了缓存文件,缓存文件不输出这句话
这样我们就简单做了一个静态缓存,完整代码如下:
<?php$filename = "./cache/test.html";//定义缓存有效期$cachetime = 5;//判断缓存文件是否存在if(!file_exists($filename) || filemtime($filename)+$cachetime<time()) //filemtime($filename)获取文件修改时间,加上定义的缓存时间小于当前时间{ //开启内存缓存 ob_start();?><!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><h1>水果信息表</h1><table width="100%" border="1" cellpadding="0" cellspacing="0" > <tr> <td>代号</td> <td>名称</td> <td>价格</td> <td>产地</td> <td>库存</td> <td>操作</td> </tr> <?php //造连接对象 $db = new MySQLi("localhost","root","123","mydb"); //写SQL语句 $sql = "select * from fruit"; //执行 $result = $db->query($sql); //取数据 /*$attr = $result->fetch_all(); foreach($attr as $v) { echo "<tr><td>{$v[0]}</td><td>{$v[1]}</td><td>{$v[2]}</td><td>{$v[3]}</td><td>{$v[4]}</td></tr>"; }*/ while($attr = $result->fetch_row()) { echo "<tr><td>{$attr[0]}</td><td>{$attr[1]}</td><td>{$attr[2]}</td><td>{$attr[3]}</td><td>{$attr[4]}</td><td> <a href='shanchu.php?code={$attr[0]}' onclick=\"return confirm('确定删除么')\"> 删除 </a> <a href='xiugai.php?code={$attr[0]}'>修改</a> </td></tr>"; } ?></table><a href="add.php">添加数据</a></body></html><?php //从内存缓存中获取页面代码 $content = ob_get_contents(); //将获取到的内容存放到缓存文件 file_put_contents($filename,$content); //清掉内存缓存 ob_flush(); echo "######################################"; //测试是否调用了缓存文件,缓存文件不输出这句话}else{ include($filename); //如果存在,调用缓存文件}?>
最后来看一下,效果:
第一次执行该页面,出现缓存:
再次执行,则没有重新建立缓存,而是直接读取的静态页面test.html:
过了一段时间,又重新生成了缓存,这个时间就是我们之前设置的缓存过期时间。
转自:http://www.cnblogs.com/lingxin/p/6202220.html
1 0
- 【PHP】静态缓存简单应用
- PHP的缓存与静态化应用
- PHP实现静态缓存
- php 纯静态缓存
- PHP MemCached 缓存应用
- php缓存—静态页面
- php缓存生成静态页
- php缓存技术之静态缓存
- php静态缓存 ob局部缓存
- php缓存技术之静态缓存
- php简单缓存学习
- javascript 简单缓存应用
- php 静态方法应用
- [php] ThinkPHP缓存技术(S(),F(),查询缓存,静态缓存)
- PHP企业级应用缓存技术
- PHP缓存应用场景分析
- PHP简单的缓存类
- ZendFramework 缓存的简单应用
- PHP开发工具及服务器
- sql sever 求阶乘的案例
- 集合的操作(员工类 第三篇)
- Http session
- Android ListView三级联动,实现自定义地址选择器
- 【PHP】静态缓存简单应用
- ubuntu使用NAT实现局域网的网络共享
- Oracle_sql_(7)
- 用 Flask 来写个轻博客 (28) — 使用 Flask-Assets 压缩 CSS/JS 提升网页加载速度
- 从零开始做远控 第三篇
- mysql索引失效统计
- 11111111111
- Struts2+Spring4+Hibernate4整合系列--(四)StepByStep4
- js查询数组是否有重复数据