利用php的ob缓存机制实现页面静态化方法


Posted in PHP onJuly 09, 2017

首先介绍一下php中ob缓存常用到的几个常用函数

ob_start():开启缓存机制

ob_get_contents():获取ob缓存中的内容

ob_clean()清除ob缓存中的内容,但不关闭缓存

ob_end_clean() 清除ob缓存中的内容,并关闭缓存

ob_flush 清空缓存,输出内容,但不关闭缓存

ob_end_flush 清空缓存,输出内容,并关闭缓存

flush强制刷新输出缓存中的内容

按照http协议的规定,回应内容不能在回应头之前输出,所以,如果在header()函数前面有内容输出,就会出现错误,但使用了ob_start()后就会将回应内容先放在ob缓存中,不会再消息头发送之前被发送,就解决了header()报错的问题!

下面说一下用php自带的ob缓存机制实现页面静态化的方法,示例代码如下

<?php
  
    $id=$_REQUEST['id'];
    
    //判断缓存文件是否存在,如果存在,直接输出
    if(file_exists('content'.$id.'.html')){
      echo file_get_contents('content'.$id.'.html');
      return;
    }
    
    //开启缓存机制
    ob_start();
    
    //到数据库中查询所需要的内容
    $conn=mysql_connect("localhost","root","root");
    mysql_select('db');
    mysql_query('set names utf8');
    
    $sql="select content from table_name where id=$id";
    $res=mysql_query($sql);
    $row=mysql_fetch_assoc($res);
    $content=$row[0];
    
    mysql_free_result($res);
    mysql_close($conn);
    echo $content;
    //将输出的内容保存到文件中,形成静态页面,在下次访问的时候,直接读取输出
    file_put_contents('content'.$id.'.html',ob_get_contents());


?>

如上述代码所示:

将我们查询到的内容直接保存到html文件中,如果文件存在,之间输出,如果不存在,则访问数据库,执行对应的查询过程

如果要设置文件的过期时间,可以在if语句里面加一个判断条件,用于判断缓存文件是否过期,time()-设置的过期时间

以上这篇利用php的ob缓存机制实现页面静态化方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
php strcmp使用说明
Apr 22 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
php微信公众号开发之现金红包
Apr 16 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 #PHP
详解php中serialize()和unserialize()函数
Jul 08 #PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 #PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 #PHP
php实现保存周期为1天的购物车类
Jul 07 #PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 #PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 #PHP
You might like
解析thinkphp基本配置 convention.php
2013/06/18 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
php中错误处理操作实例分析
2019/08/23 PHP
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
python实现合并两个数组的方法
2015/05/16 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
个人投资合作协议书
2014/10/12 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
尼克胡哲观后感
2015/06/08 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书