OB缓存是什么?以及OB缓存的运用场景

1.ob缓存运行方式


2.注意:在程序中如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给浏览器,如果,你使用ob_clean()类似的函数,会情况缓存中的内容,那么就不用有数据发送给浏览器

ob_start() 开启

ob_get_contents()  获取缓存中的数据

ob_clean()  清空缓存中的数据

ob_end() 关闭ob缓存

ob_end_clean() 清空缓存并关闭ob缓存

ob_flush()  刷新缓冲区【就是把ob缓存中的内容放到程序缓存中,缓存中内容就是空了,默认是在程序执行完后再放到程序缓存中,用此函数可以在程序执行时任意时候放到程序缓存中】

flush() 把程序缓存内容推送到浏览器【一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。】

说的简单点:默认情况下,php会把输出的内容放到【程序缓存】中,待程序跑完,把【程序缓存】中的东西全部抛到浏览器中;现在使用ob缓存,开启后,所有的输出都会放到【ob缓存】中,头信息(header)等这些依旧存放到【程序缓存】中,待程序跑完,【ob缓存】中的内容会被放到【程序缓存】内容后面,再送到浏览器。ob_flush()是把【ob缓存】中的内容放到【程序缓存】中,之前只有待程序跑完才会把【ob缓存】内容放到【程序缓存】中,现在用ob_flush()就可以在任意时候送到【程序缓存】中;flush()函数的作用是把【程序缓存】中的数据抛到浏览器中;
总结:ob_flush()把ob缓存中的内容放到程序缓存
flush()是把程序缓存中的内容送到浏览器缓存中
 

我的电商项目的帮助中心、商品的详情页面都使用到了ob缓冲,因为帮助中心和商品详情的内容都是一些我们短期不需要进行修改的内容,当时我首先使用ob_start()方法打开我们的ob缓冲,将使用ob_get_contents()或者ob_flush() 方法获取我们ob缓冲页面的一些内容,当我们的缓冲中没有我们想要的内容的时候,会访问我们的数据库,将会从数据库中获取到我们需要的值,然后进行判断,会先将数据库的这些内容添加到我们缓冲中,也是为了在下次访问的时候,免去我们访问数据库,我们也可以给他添加一个缓存的有效时间,在这个时间内,用户查找就不会去访问数据库,在缓存过期后在再去访问数据库。这种情况下我们可以减少数据库的访问及数据库的压力,最后我们会使用ob_end()的方法将我们使用的ob缓冲进行关闭,我们使用它的原因就是运用了它的一个优势,减轻数据库的压力,减少对数据库的访问情况。

猜你喜欢

转载自blog.csdn.net/weixin_43681591/article/details/86513518
ob