利用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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
剖析 PHP 中的输出缓冲
Dec 21 PHP
php SQL防注入代码集合
Apr 25 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php跨域cookie共享使用方法
Feb 20 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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脚本加密专家php解密算法
2020/09/13 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
python中尾递归用法实例详解
2015/04/28 Python
python 2.7.14安装图文教程
2018/04/08 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
高中生学习的自我评价
2013/12/14 职场文书
人民教师求职自荐信
2014/03/12 职场文书
中药学自荐信
2014/06/15 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
体育活动总结
2015/02/04 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android