利用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实现多条件查询实例代码
Jul 17 PHP
使用PHP导出Word文档的原理和实例
Oct 21 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
PHP重定向与伪静态区别
Feb 19 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
php split汉字
2009/06/05 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
python迭代dict的key和value的方法
2018/07/06 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
python解析yaml文件过程详解
2019/08/30 Python
详解Python 中的容器 collections
2020/08/17 Python
Python基于execjs运行js过程解析
2020/11/27 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
德国综合购物网站:OTTO
2018/11/13 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
基层干部十八大感言
2014/01/19 职场文书
特教教师先进事迹
2014/05/21 职场文书
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python
什么是css原子化,有什么用?
2022/04/24 HTML / CSS