我正在加载一个由 PHP 动态生成的特别大的 JSON 字符串。为了向用户提供一些反馈,我想显示下载进度。
我已经弄清楚了代码,它对于静态内容(例如图像、JS 文件等)工作得很好。但是,它似乎不适用于动态文件。
这是有道理的,因为动态文件没有可预测的内容长度,但即使我在 PHP 中添加它:
ob_start(function($c) {
header("Content-Length: ".strlen($c));
return $c;
});
它仍然不发送标头(但如果我添加任何其他标头,它就可以正常工作)。
有没有办法强制 Apache 发送Content-Length
标题?目前我唯一的选择是将输出保存到临时文件并重定向到它。这可行,但有点混乱,所以如果可能的话我宁愿避免它。
我遇到了类似的问题,但在我的情况下,Apache 未发送 Content-Length 标头,因为响应是 gzip 压缩的。当我禁用压缩时,内容长度会被正确计算并发送。
下面是 htaccess 设置,仅对 swf 文件禁用 gzip 压缩
<FilesMatch "\.swf$">
SetEnv no-gzip 1
</FilesMatch>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)