利用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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
说明的比较细的php 正则学习实例
Jul 30 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 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
第十五节--Zend引擎的发展
2006/11/16 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
python事件驱动event实现详解
2018/11/21 Python
python3转换code128条形码的方法
2019/04/17 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
中国制造网:Made-in-China.com
2019/10/25 全球购物
护士自荐信
2013/10/25 职场文书
社区学习十八大感想
2014/01/22 职场文书
入学生会自荐书范文
2014/02/05 职场文书
诚信考试承诺书
2014/03/27 职场文书
骨干教师培训方案
2014/05/06 职场文书
地质灾害防治方案
2014/05/14 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
基于Python实现将列表数据生成折线图
2022/03/23 Python