利用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 相关文章推荐
php array_slice函数的使用以及参数详解
Aug 30 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
PHP语法小结之基础和变量
Nov 22 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
Laravel日志用法详解
Oct 09 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 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下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
Django入门使用示例
2017/12/12 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
python如何调用java类
2020/07/05 Python
Django缓存Cache使用详解
2020/11/30 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
生物技术研究生自荐信
2013/11/12 职场文书
车工岗位职责
2013/11/26 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python
Python经常使用的一些内置函数
2022/04/11 Python