技术/研发关于php的输出缓冲区,ob_start(),ob_get_contents()等的理解

标签:网站研发技术群 sun 发表 于:3年前 浏览量:449

ob是output buffering的简称,就是输出缓冲区。如果使用了ob_start函数,那么之后的输出内容(echo等)就不进行实际输出,而是存入缓冲区里面,随后可以使用ob_flush实际输出、ob_clean删除、ob_get_contents获得内容保存到静态文件等。
 
使用输出缓冲区有两个主要的好处:一是可以在输出一些内容之后在设置header(例如cookie等),使得程序设计的逻辑性变得简单;二是可以对缓冲区里面的输出内容撤销、删除、压缩、保存到文件等操作。
 
相关的操作是使用一系列的ob_函数来实现的


找到php.ini找到 output_buffering = On 将该参数设置成Off就是关掉buffering,这样你必须加ob_start()才可以打开缓存,我们平时习惯写ob_start();那是应为我们并不知道配置文件中buffering是否开始,为了保险才写的,
    该函数常用与页面静态化,构造微型web框架能起到很关键的作用,讲渲染好的页面通过输入缓存的方式直接写入到一个文件,这样判断该文件是否存在即可实现用户本次访问需不需要去重新渲染一个页面,也可应用到大型项目中,用nosql去存储渲染好的页面,具体使用方法应人而异。


1.  ob_start() - 在服务器上开一个缓冲区, 具体开到哪里, 我也不知道, 反正开了缓冲区后, echo的内容就可以临时保存到 缓冲区了, 而不是直接输出到 浏览器.

优点:它的使用可以大大提高网页的加载速度。

2.  ob_get_contents()  - 此函数可以缓冲区中的内容给返回 如:$a = ob_get_contents();就将缓存内容给了变量$a.

3.  ob_get_level() - 我理解是这个意思是开了几个ob_start(),然后这里返回的值就是几

4.  ob_flush() - 把缓冲里面的内容给冲出来, 冲到浏览器上

5.  ob_clean() - 把缓冲里面的内容给清洗干净

6.  ob_end_flush() - 把缓冲里面的内容给冲出来关闭缓冲与ob_start一一对应

7.  ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲与ob_start一一对应

8.  flush() - 刷新输出缓冲


本文由 sun发表。转载请注明出处:https://www.mihua.net/list/0/20019.html

发表评论

您的昵称:

猜你喜欢

最近更新