利用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 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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自动反斜杠的函数代码
2010/01/05 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
python连接oracle数据库实例
2014/10/17 Python
Python实现队列的方法
2015/05/26 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
python实现内存监控系统
2021/03/07 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
基于Python 函数和方法的区别说明
2021/03/24 Python
党员自我评价分享
2013/12/13 职场文书
小学中秋节活动方案
2014/02/06 职场文书
毕业生自荐信格式
2014/03/07 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
小学生读书活动总结
2014/06/30 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android