php的ob缓存详解及页面静态化运用

20 篇文章 0 订阅

什么是ob?

1.1     ob缓冲介绍

output buffering:输出缓冲

ob缓冲是php向浏览器响应数据时的一块缓冲区域

通过ob缓冲,可以减轻服务器的压力,例如:如果浏览器请求的数据比较大的话,如果一次性返回这么多数据,如果访问的用户多的话,服务器的压力就比较大

于是,php程序就可以先给每个用户一点,就会输出到ob缓冲区域

ob 是 output buffering的缩写;


ob系列函数归纳   输出控制函数(output control函数)

  • flush — 刷新输出缓冲
  • ob_clean — 清空(擦掉)输出缓冲区
  • ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲
  • ob_end_flush —这个函数将送出最顶层缓冲区的内容(如果里边有内容的话),并关闭缓冲区。
  • ob_flush — 冲刷出(送出)输出缓冲区中的内容
  • ob_get_clean — 得到当前缓冲区的内容并删除当前输出缓。
  • ob_get_contents — 返回输出缓冲区的内容
  • ob_get_flush — 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
  • ob_get_length — 返回输出缓冲区内容的长度
  • ob_get_level — 返回输出缓冲机制的嵌套级别
  • ob_get_status — 得到所有输出缓冲区的状态
  • ob_gzhandler — 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer
  • ob_implicit_flush — 打开/关闭绝对刷送
  • ob_list_handlers — 列出所有使用中的输出处理程序。
  • ob_start — 打开输出控制缓冲
  • output_add_rewrite_var — 添加URL重写器的值(Add URL rewriter values)
  • output_reset_rewrite_vars — 重设URL重写器的值(Reset URL rewriter values)

ob_start

(php 4,php 5,php7)
ob_start() --- 打开输出控制缓冲

bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )

此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),需要输出的内容被存储在内部缓冲区中。

内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。 想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数。另外, 使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容。

ob_start  打开输出控制缓冲
ob_clean 清空缓存区内容  但是不会销毁缓冲区
ob_end_clean  清空缓冲区内容 销毁缓冲区 并结束ob
ob_end_flush  输出缓冲区内容  清空缓冲区  销毁缓冲区  结束ob
ob_get_contents 获取缓冲区的内容

1     ob缓冲处理器

当php将缓冲区域的内容刷出到浏览器的时候,自动的调用的函数,就称之为缓冲处理器,通常我们使用ob_gzhandler处理器对输出的内容进行压缩处理

体验一把,在没有使用ob_gzhandler压缩之前的效果:(使用火狐浏览器进行测试)

 

现在使用ob_gzhandler处理器进行压缩处理

 

1.2     ob多缓冲

所谓的多缓冲就是可以开启多个ob缓冲

注意:如果开启了多个缓冲,那么我们操作的就是离开启最近的那个缓冲,和其他的缓冲区域没有影响

 

1.3     结合ob缓冲实现页面静态化

我们先参考一下smarty在display()的时候,做了哪些处理呢?

先assign分配变量到模板

再display的时候,将变量进行替换

在获取模板变量、进行变量替换之前,先开启ob缓冲,后面的处理都会在缓冲里面进行处理

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值