我正在编写一个 php 脚本,在我的 header()
函数之前的某个地方,我已经将文本打印到浏览器,从而导致我的 header()
函数给我一个众所周知的错误:
Warning: Cannot modify header information - headers already sent.
现在我的问题是,我打算在header()
函数前后使用ob_start()
和ob_flush()
.但我曾经听说输出缓冲区之类的东西会对应用程序的性能产生负面影响。这有多真实?
或者我应该坚持打印 Javascript 函数来重定向页面的想法。
感谢您的宝贵时间。
最佳答案
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
测试 ob_start
和 friend 看看性能差异是否重要。如果是,请寻找替代方案。
最简单的选择是在打印之前移动 header()
调用。
因为您可能会使用类似以下内容执行重定向:
header('Location: /new/location/');
在此 header()
调用之前,您不应该打印任何内容,因为无论如何客户端都不会对您打印的数据执行任何操作(除非我遗漏了有关 HTTP 的内容)。
(Javascript 不是重定向的好选择,meta
也不是刷新,除非您出于某种原因想要检测 Javascript。)
关于php - 输出缓冲区如何降低性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526358/