ob_starthttps和http的区别?

ob_start difference between https and http?

与 http 相比,https 中的 ob_start、ob_end_flush、ob_end 和 ob_flush 是否有不同的行为?

我已经阅读了有关 http 和 https 之间区别的帖子:

因为我读过这篇关于 ob_start 和 headers 的文章:

Showing error pages when sending header with header() function

但我没有找到我需要的答案。

我的案例:

我正在两个网站上使用 ob_start 刷新加载图像。 他们使用完全相同的代码。 唯一的区别是协议 - 一种是 http 一种是 https。

http 的表现很好

使用 http 的站点输出图像,然后将继续使用脚本。

https 的行为不同

使用 https 的站点总是在脚本完全处理后输出图像。

谢谢。我很高兴得到任何提示。

我看到两种可能性:

  • HTTPS以块(记录)的形式发送数据,可能是16KB large。如果您的图像小于该尺寸,服务器可能会在发送完整块之前等待更多数据。

  • 您的 HTTPS 由反向代理实现,代理在转发任何内容之前等待发送整个响应。

如果您使用的是 php-fpm,请尝试 http://php.net/manual/en/function.fastcgi-finish-request.php

如果您使用的是 nginx,请尝试 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering