我在很多使用
的网站上看过ob_start();
可以增强页面加载时间,因为它将php存储在一个变量中并一次显示它而不是稍微处理php。
它对
非常有用header('location: /');
有人说这是意大利面条代码,但只要代码对任何程序员都清晰简洁,那么这应该不是问题,对吗?
您对使用它有什么想法,以及您设置为输出缓冲的内容,对于我应该或不应该使用它的方式,时间和原因有利有弊。
答案 0 :(得分:6)
This question对该主题有一些非常好的评论
答案 1 :(得分:1)
输出缓冲的主要优点是您可以将它与ob_gzhandler一起使用,它会压缩您的输出,因此您可以使用更少的带宽。如果你的服务器没有设置为发送压缩的php文件,那么很好用。
另一个优点是,如果您的脚本使用数据库或其他受限资源,并且在关闭连接或释放这些资源之前有一些输出。而不是有这种事情:
你有:
当您的脚本需要连接100ms到数据库并且您的用户需要300多个才能下载它时,您可以了解输出缓冲如何帮助释放对数据库连接限制的压力。
我知道使用配置良好的服务器编写的代码可能会使这些优势无效,但您永远不会知道谁会在您之后进行编码,并且您并不总是控制它正在运行的服务器。
答案 2 :(得分:-1)
如果您使用标头函数(如header(),cookie(),session),则不必发送任何输出。这些函数必须在输出之前使用。
但是有些用户要停止使用ob_start或输出缓冲功能发送输出。
因此您可以使用javascript或元转发来转发用户。
<script language="javascript"> window.location = 'some.php'; </script>
或者您可以使用元刷新来转发用户。
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=some.php">
如果你真的需要使用标题功能,你必须不发送任何输出(不要忘记输入字符或空格或输出UTF-8签名)