利用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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
IIS6的PHP最佳配置方法
Mar 19 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
php防注入及开发安全详细解析
Aug 09 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
递归实现php数组转xml的代码分享
May 14 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
php计算title标题相似比的方法
Jul 29 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 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+mysql写的留言本
2006/10/09 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
浅析Python中的for 循环
2016/06/09 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
关于安全演讲稿
2014/05/09 职场文书
垃圾桶标语
2014/06/24 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
总经理岗位职责
2015/02/04 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL