利用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 相关文章推荐
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 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函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
domReady的实现案例
2016/11/23 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Python selenium如何设置等待时间
2016/09/15 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
使用python实现名片管理系统
2020/06/18 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
资产评估专业学生的自我鉴定
2013/11/14 职场文书
高中军训感言800字
2014/03/05 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
党员四风剖析材料
2014/08/27 职场文书
2015年学校总务工作总结
2015/07/20 职场文书