利用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 相关文章推荐
杏林同学录(二)
Oct 09 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
php将文本文件转换csv输出的方法
Dec 31 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 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新手上路(七)
2006/10/09 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
新手该如何学python怎么学好python?
2008/10/07 Python
Python 的 with 语句详解
2014/06/13 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Flask之flask-session的具体使用
2018/07/26 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python 字符串常用方法汇总详解
2019/09/16 Python
python安装gdal的两种方法
2019/10/29 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
python调用私有属性的方法总结
2020/07/24 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
毕业生的求职信范文分享
2013/12/04 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers