利用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 相关文章推荐
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
php桥接模式应用案例分析
Oct 23 PHP
PHP实现文件上传后台处理脚本
Mar 04 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
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP如何实现跨域
2016/05/30 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
js实现3D旋转效果
2020/08/18 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
Python生成8位随机字符串的方法分析
2017/12/05 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python分布式编程实现过程解析
2019/11/08 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
教师演讲稿范文
2014/01/08 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
大学军训决心书
2015/02/05 职场文书