我正在编写一个PHP脚本,在我的header()
功能之前我已经将文本打印到浏览器,因此导致我的header()
功能给我一个众所周知的错误:
警告:无法修改标头信息 - 已发送的标头.
现在我的问题是,我有使用ob_start()
和ob_flush()
在header()
函数之前和之后的意图.但我曾经听说过像输出缓冲区这样的东西会对一个应用程序的性能产生负面影响.那是真的吗?
或者我应该坚持打印Javascript函数来重定向页面的想法.
谢谢你的时间.
我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源.
测试ob_start
和朋友,看看性能差异是否重要.如果是,请寻找替代方案.
最简单的选择是header()
在打印前移动呼叫.
因为您可能会执行重定向,例如:
header('Location: /new/location/');
在此header()
调用之前,您不应该打印任何内容,因为客户端无论如何都不会对您打印的数据执行任何操作(除非我缺少关于HTTP的内容).
(Javascript不是重定向的好选择,也不是meta
刷新,除非你想出于某种原因检测Javascript.)