php - 输出缓冲区如何降低性能

标签 php output-buffering

我正在编写一个 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/

相关文章:

php - 错误号 : 1066 Not unique table/alias: 'service' in codeigniter

php - 在 Laravel 中动态创建各种连接

javascript - div 中显示上一页,并显示最后一页数据表

php - 如何在 PHP 输出缓冲区的开头添加一些内容?

PHP 输出缓冲(ob_start、ob_flush)

python - 如何检查是否在 Python 中启用了输出缓冲

php - 如何为每个 echo 获取回调?

PHP ob_start() 问题

PHP 命名空间混淆 - 关键字 v 常量

php - 在数组内搜索数组