利用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 相关文章推荐
php下使用SMTP发邮件的代码
Jan 10 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php中addslashes函数与sql防注入
Nov 17 PHP
PHP多线程之内部多线程实例分析
Mar 09 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
php生成mysql的数据字典
Jul 07 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
php防止表单重复提交实例讲解
Feb 11 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 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获取网站域名和地址的代码
2008/08/17 PHP
php 小乘法表实现代码
2009/07/16 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
Cookie 小记
2010/04/01 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
pandas 选择某几列的方法
2018/07/03 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
跳槽求职信范文
2014/05/26 职场文书
大四毕业生自荐书
2014/07/05 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
2015年社区工作总结
2015/04/08 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
手写实现JS中的new
2021/11/07 Javascript
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS