利用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创建PDF中文文档
Oct 09 PHP
PHPCMS的使用小结
Sep 20 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
php实现TCP端口检测的方法
Apr 01 PHP
php算法实例分享
Jul 14 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 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 ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php递归函数怎么用才有效
2018/02/24 PHP
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
利用python画一颗心的方法示例
2017/01/31 Python
numpy.random模块用法总结
2019/05/27 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
pycharm安装及如何导入numpy
2020/04/03 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
卫校中专生的自我评价
2014/01/15 职场文书
诚信贷款承诺书
2014/05/30 职场文书
个人党性分析总结
2015/03/05 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
MySQL令人咋舌的隐式转换
2021/04/05 MySQL