我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用

 例子:

  当访问一个页面时,先判断是否存在缓存,存在则直接输出缓存文件中的内容,否则,先查询数据库,获得数据,生成缓存文件。

  

详解PHP缓存机制:

  output_buffering,常用的函数

  ob_start()       开启PHP缓存机制功能

  ob_get_contents()  返回输出缓冲区的内容

  ob_clean()       清空(擦掉)输出缓冲区

  ob_end_clean()     清空(擦除)缓冲区并关闭输出缓冲

  ob_flush()       冲刷出(送出)输出缓冲区中的内容

  ob_end_flush()     冲刷出(送出)输出缓冲区内容并关闭缓冲

  flush()        刷新输出缓冲(刷新程序缓存内容)

通常是ob_flush();flush()同时一起使用

使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。
然后用ob_get_contents()得到缓冲区的数据。

ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。

函数ob_end_clean() 会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。
此时得用一个函数ob_get_contents()在ob_end_clean()前面来获得缓冲区的内容。
这样的话, 能将在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。

面试题:

  简述ob_flush()和flush()的区别!

答:①ob_flush()  冲刷出(送出)输出缓冲区中的内容②flush()    刷新输出缓冲(刷新程序缓存内容)该函数将当前为止程序的所有输出发送到用户的浏览器该函数将当前为止程序的所有输出发送到用户的浏览器个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。甚至               浏览器也会在显示之前,缓存接收到的内容。例如:Ⅰ Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在接受到</table> 标记之前,不会显示出整个表格。Ⅱ 一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来                   让这些浏览器显示页面内容

  浅谈ob_flush()和flush()的用法!  

flush和ob_flush的使用上有一些特别注意的地方,造成无法刷新输出缓冲。一. flush和ob_flush的正确顺序,先ob_flush再flush.如下:ob_flush(); flush();如果Web服务器的操作系统是windows系统,那顺序颠倒或者不使用ob_flush()也不会出现问题。但是在Linux系统上就无法刷新输出缓冲。二. 使用ob_flush()前,确保前面的内容大小足够4069字符。一些Web服务器的output_buffering默认是4069字符或者更大,//一般是php.ini中 output_buffering = 4069
即输出内容必须达到4069字符服务器才会flush刷新输出缓冲,为了确保flush有效,最好在ob_flush()函数前有以下语句:print str_repeat(" ", 4096);以确保到达output_buffering值。

     

如果要测试PHP缓存机制,需要做如下配置:

php.in文件display_errors = Onoutput_buffering = Offerror_reporting = 设置错误级别错误级别:E_ALL      (Show all errors, warnings and notices including coding standards.)E_ALL & ~E_NOTICE      (Show all errors, except for notices)E_ALL & ~E_NOTICE & ~E_STRICT          (Show all errors, except for notices and coding standards warnings.)E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR      (Show only errors)

 

  

转载于:https://www.cnblogs.com/Zell-Dinch/p/3901721.html

页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...相关推荐

  1. python读取数据的函数详解_你了解文件缓存机制吗?磁盘文件如何读写?Python中open函数详解...

    我们知道,在使用Python打开一个文件时,一般使用的是open()函数,但是你真正了解这个函数么?文件打开后如何进行缓存?对于大文件它是如何处理的?今天,小编带你来详细了解一下-- Python如何 ...

  2. 清除浏览器缓存之后为什么还是显示旧的html页面_H5缓存机制浅析-移动端Web加载性能优化...

    1 H5缓存机制介绍 H5,即HTML5,是新一代的HTML标准,加入很多新的特性.离线存储(也可称为缓存机制)是其中一个非常重要的特性.H5引入的离线存储,这意味着 web 应用可进行缓存,并可在没 ...

  3. android webView的缓存机制和资源预加载

    android 原生使用WebView嵌入H5页面 Hybrid开发 一.性能问题 android webview 里H5加载速度慢 网络流量大 1.H5页面加载速度慢 渲染速度慢 js解析效率 js ...

  4. H5缓存机制浅析-移动端Web加载性能优化

    1 H5缓存机制介绍 H5,即HTML5,是新一代的HTML标准,加入很多新的特性.离线存储(也可称为缓存机制)是其中一个非常重要的特性.H5引入的离线存储,这意味着 web 应用可进行缓存,并可在没 ...

  5. H5缓存机制浅析-移动端Web加载性能优化【干货】

    转载:H5缓存机制浅析-移动端Web加载性能优化[干货] 作者:贺辉超,腾讯游戏平台与社区产品部 高级工程师 目录 1 H5缓存机制介绍 2 H5缓存机制原理分析 2.1 浏览器缓存机制 2.2 Do ...

  6. java使用的页面静态化技术_java秒杀系列(2)- 页面静态化技术

    ###前言 通过代码片段分别介绍服务端渲染.客户端渲染.对象缓存三种方式的写法. 代码片段仅供参考,具体实现需要根据业务场景自行适配,但思想都是一样. 一.服务端渲染方式 ####1.接口返回html ...

  7. 微服务架构下静态数据通用缓存机制

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 |  my.oschina.net/u/3971241/bl ...

  8. 微服务架构下的静态数据通用缓存机制!

    什么是静态数据 为什么需要缓存 通用缓存机制 总结 后记 在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验 ...

  9. 微服务架构下,静态数据通用缓存机制!

    本文转自:波斯码 链接:https://blog.bossma.cn/architecture/microservice-business-static-data-universal-cache-me ...

最新文章

  1. 原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现
  2. 难点电路详解之负反馈放大器电路(2)
  3. httpbin.org的使用
  4. 电脑屏保海底世界_世界上最后一个深海实验室,隐藏了人类未来的秘密
  5. 刷爆了!这份被程序员疯传的Python神作牛在哪?
  6. Bloom是REST API缓存中间件,充当负载平衡器Nginx和REST API服务之间的反向代理
  7. 一键关闭android应用程序工具类
  8. php 月份查询生日_PHP----------php根据生日(时间戳)计算星座
  9. android 常见的异常,Android 几个常见异常且容易被忽略的地方
  10. macOS 锐捷校园网解决方案
  11. 什么专业的会学python语言_为什么要学习Python编程语言?哪些人适合学习Python?...
  12. 腾讯云人脸识别 活体检测 人员库管理
  13. 20201228攻防世界WEB模块入门级别全详解通关记录
  14. systemd-journald日志进程介绍
  15. linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取,linuxiio
  16. mysql远程3306不通_mysql服务器3306端口不能远程连接的解决
  17. Java设计模式之代理模式
  18. Git 最著名报错 “ERROR: Permission to XXX.git denied to user”终极解决方案
  19. Activity启动过程详解(Android P)
  20. 07-ET框架的数据库连接

热门文章

  1. 批量修改root密码#shell脚本
  2. MARSHALL LIBRARY OPENING HOURS
  3. good way for university professors accumulating the citation
  4. 我的性格是外向型,解决问题导向的
  5. 1970.1.1这个特殊时间
  6. TortoiseGIT安装过程及问题
  7. HBase 3.0 可能的新特性
  8. 12月9日 php环境的安装和基本知识的学习
  9. Linux 定期删除3天以前的日志文件
  10. 都江堰--我永远支持你