利用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中的时间显示
Jan 18 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
ThinkPHP路由机制简介
Mar 23 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP操作Redis数据库常用方法示例
Aug 25 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性能优化 产生高度优化代码
2011/07/22 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python常见字典内建函数用法示例
2018/05/14 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
python实现kmp算法的实例代码
2019/04/03 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
python 模拟登陆github的示例
2020/12/04 Python
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
物流业务员岗位职责
2015/04/03 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
python中取整数的几种方法
2021/11/07 Python
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python