gpt4 book ai didi

php - PHP 代码是在页眉还是页脚中重要吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:31 25 4
gpt4 key购买 nike

PHP 是在处理文件时发送代码,还是编写整个 HTML 响应然后发送?例如,将昂贵的 PHP 函数移动到服务器上的文件页脚中会有什么不同吗?

此外,如果您使用 Transfer-Encoding: chunked 会有什么不同吗?

最佳答案

最终,这取决于。我使用的大多数 PHP 托管机制将以 block 的形式流式传输响应,因为它是从脚本接收到的,完全省略了 Content-Length header (因为这是事先不知道的)。您可以使用 flush() 刷新响应定期强制服务器将到目前为止缓冲的内容传输给客户端。

因此,如果您要做的事情会花费很多时间并且希望让页面提前呈现,那么正确的做法是输出尽可能多的页面,调用 flush(),然后执行昂贵的任务。请确保不要超过声明的最长 PHP 脚本持续时间。


好吧,承认这个解释有点过于简单了:

Content-Length header 在某些情况下可能会实际发送。例如,如果脚本的响应小于 PHP 发送数据的缓冲区,和/或如果脚本需要一定的时间来执行,那么服务器将确切知道内容的长度并可以添加长度 header 。

此外,flush() 实际上可能不会做任何事情。这取决于您的服务器配置和其他因素。请特别注意文档中关于服务器端行为的这些警告:

flush() may not be able to override the buffering scheme of your web server and it has no effect on any client-side buffering in the browser. It also doesn't affect PHP's userspace output buffering mechanism. This means you will have to call both ob_flush() and flush() to flush the ob output buffers if you are using those.

Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.

Server modules for Apache like mod_gzip may do buffering of their own that will cause flush() to not result in data being sent immediately to the client.

换句话说:测试,测试,测试。确保网络服务器不会干扰您试图实现的行为。如有必要,重新配置 Web 服务器。

关于php - PHP 代码是在页眉还是页脚中重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com