• ob缓存机制


    1.缓冲,也就是buffer, ob是output_buffering的简写

    2.echo、print_r=>php output_buffering=>webServer buffer=>browser buffer=>browser display

    从echo、print_r函数到发送信息给客户端经历了两个缓冲区,在客户端还经历了一个浏览器缓冲区。
    也就是说,当你echo输出数据的时候,其实是要经历一层缓存的,只是说这个 buffer默认是关闭的,当我们开启之后,输出数据时,就会先走缓冲区了,当缓冲区数据满了之后就自动输出。


    3.. 在程序中如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给浏览器

    ob的基本原则:如果ob缓存打开,则echo的数据首先放在ob缓存。如果是header信息,直接放在程序缓存。当页面执行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给浏览器

    4.
    ob的基本作用:
    1)防止在浏览器有输出之后再使用setcookie()、header()或session_start()等发送头文件的函数造成的错误。其实这样的用法少用为好,养成良好的代码习惯。
    2)捕捉对一些不可获取的函数的输出,比如phpinfo()会输出一大堆的HTML,但是我们无法用一个变量例如$info=phpinfo();来捕捉,这时候ob就管用了。
    3)对输出的内容进行处理,例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。
    4)生成静态文件,其实就是捕捉整页的输出,然后存成文件。经常在生成HTML,或者整页缓存中使用。

     

    ob_start() :打开输出控制缓冲
    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE.

    ob_get_contents() :返回输出缓冲区的内容
    返回值:输出缓冲区的内容,或者如果输出缓冲区无效将返回FALSE

    ob_clean() :清空(擦掉)输出缓冲区的内容。 没有返回值

    ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE

    ob_flush() :冲刷出(送出)输出缓冲区中的内容。 没有返回值

    ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE

  • 相关阅读:
    初识Java8新特性Lambda(二) 之collections
    hadoop-2.5.0-cdh5.3.6 native包 替换
    初识Java8新特性Lambda(三 ) 之lambda类库Stream
    初识Java8新特性Lambda(一)
    js将文件流转为文件
    验证有效的外部链接
    gb2312编码转换
    Beautiful Soup4
    chromedriver版本下载
    redmine使用post登录,cookie使用
  • 原文地址:https://www.cnblogs.com/pl0418/p/11502512.html
Copyright © 2020-2023  润新知