我的目标是较早地刷新我的网站的标题部分,而我的PHP脚本被拼接页面的其余部分一起,并将其发送一旦其完成。 重要的是,块被压缩发送到浏览器。 (我使用Apache / 2.2和PHP / 5.3.4)
现在,我想在我的PHP脚本中调用函数ini_set(“要用zlib.output_compression”,“开”),以实现这一目标。 但是,如果使用冲水()在我的脚本的任何地方,甚至在最后的压缩将不再工作。
问题是:
a)在使用该方法的zlib将刷新输出缓冲器并发送压缩块到浏览器一旦该输出缓冲区的大小达到?
B)如果是这样,有什么办法,以精细的控制时ZLIP 不会送我一块由刚刚设置的zlib内部缓冲区的大小? 默认值是4KB。
C)有没有什么好的办法,以早日实现压缩的冲洗可能与有关当我要冲洗它的时候更精细的控制? 也许我是完全错误的道路上:)
它一直以来我不得不对OB使用zlib压缩时间长(了解为何更高版本)。 然而,让我试着说服你在PHP中关掉zlib压缩的OB。 首先,有点背景,以确保我们在同一页上。
如何OB工作
每次PHP将打印的东西,没有OB,将被直接寄到Apache和Apache的浏览器。 取而代之的是,与OB,输出停止在阿帕奇并且等待直到数据被刷新(浏览器),或者直到脚本结束并且数据被自动地刷新。 这通过缓冲过程的Apache的Web浏览器的阶段生成页面时可以节省相当多的时间和资源。
为什么不用OB压缩在PHP
为什么你会做PHP压缩呢? 它应该是服务器的工作要做这样的任务(以及压缩js文件为例)。 什么你“应该”做大幅度免费的Apache处理PHP是安装NGINX作为前向社会公布。 这很容易设置反向代理,你甚至可以在同一台服务器PHP和Apache上安装它。
因此,设置NGINX的80端口,把Apache就比如说8080(只允许nginx的连接,但如果你把它公开了一点点的时间,因为它已经是公开和伟大不用担心调试绕过Nginx的所以没有安全问题应该上升 - 但我建议你不要将其公众长)。 然后,让nginx的反向代理到Apache时,缓存能够分担,从阿帕奇(因为nginx的为他们服务的,而不是),这意味着Apache可以做更多的PHP请求,并同时获得Nginx的执行输出压缩已经全部静态文件,腾出了Apache和PHP,甚至做)更多的请求。 作为一个额外的好处,nginx的还可以提供静态文件远远快于Apache和Nginx的同时使用较少的内存,可以处理更多的连接。
在线阅读一些教程后,即使是新手nginx的能拿nginx的设置和完成的一切,我只是1天之内说。 1天得其所也。
记住要保持输出缓冲。但是对于PHP到Apache,但把zlib压缩关闭PHP和启用它,而不是在nginx的。
文章来源: Flushing the HTML document early - with ini_set( 'zlib.output_compression','ON')?