';输出缓冲';在PHP中增加页面加载时间

';输出缓冲';在PHP中增加页面加载时间,php,outputstream,output-buffering,Php,Outputstream,Output Buffering,例如,lets take ob未启用。每次php引擎面对echo时,它都会将该内容返回到浏览器,对吗?因此,我对ob的想法是,收集所有数据,而不是一次发送一个数据到浏览器,这将产生积极的加载时间。但是,如果我错了,你能举例说明PHP中真正的(“站在后面”)是什么意思,以及你将在哪里使用它吗 如果您的PHP脚本执行得很快,则不会产生明显的差异。如果您的PHP脚本执行缓慢,但输出很短(小HTML文件),则不会有任何区别 如果脚本执行时间长(例如,从查询返回大量数据),并且输出HTML非常大,用户可以

例如,lets take ob未启用。每次php引擎面对echo时,它都会将该内容返回到浏览器,对吗?因此,我对ob的想法是,收集所有数据,而不是一次发送一个数据到浏览器,这将产生积极的加载时间。但是,如果我错了,你能举例说明PHP中真正的(“站在后面”)是什么意思,以及你将在哪里使用它吗

如果您的PHP脚本执行得很快,则不会产生明显的差异。如果您的PHP脚本执行缓慢,但输出很短(小HTML文件),则不会有任何区别

如果脚本执行时间长(例如,从查询返回大量数据),并且输出HTML非常大,用户可以看到它的不同之处,因为输出大于带宽,所以它可以以较小的片段发送给用户

基本上,它是一个执行速度很快的小文件,因为用户只从服务器下载少量数据,所以它不可见。如果代码需要很长时间才能执行,但返回少量HTML,则用户仍必须等待代码执行完成,然后才能从服务器获得输出。如果代码需要很长时间才能执行,并且输出非常大,以至于服务器发送给用户的速度比用户下载的速度快(服务器带宽比用户带宽快),那么对站点用户来说,将有一个可测量的差异-但只有在那时。

考虑这一点,这也在很大程度上取决于您输出的内容。如果一次打印1个字节,并强制将其刷新到客户端,则。。。当然,不要这样做,除非你喜欢在TCP ACK上浪费带宽(虽然很少)。但是,如果您正在构建50MB响应,请在构建完成之前开始发送它(如果可以的话),以便在没有其他响应的情况下使用内存。不过,请注意,web服务器可能会提供自己的缓冲层,因此仅因为您在PHP中输出了一些内容,并不意味着它会立即发送到客户端。