我有大量数据要发送到浏览器,可能是 100mb 左右。我已将它们分成较小的文件,以便模拟流式传输。假设我有 200 个文件,每个文件 500kb。我在 javascript 中构建了一个包含 200 个文件的数组,然后对其进行循环并为每个文件进行 ajax 调用。它工作正常。然后我想改进它,所以我对服务器上的所有内容进行了 gzip 压缩,它们下降到原始块大小的 20% 左右。我的 ajax 调用以下文件:
fileserver.php?file=/temp/media_C46_20110719_113332_ori-0.js.gz
在 fileserver.php 中,我非常简单:
$filepath = isset($_GET['file']) ? $_GET['file'] : '';
if($filepath!=''){
if(substr($filepath,-2,2)=='gz'){
header("Content-Type: text/plain" );
header("Content-Length: " .(string)(filesize($filepath)) );
header("Content-Encoding: gzip");
readfile(filepath);
}
else{
header("Location: ".$filepath );
}
}
同样,这完全有效。问题是它需要永远!在 chrome 中查看我的网络选项卡,需要 15 秒左右才能获得 100kb 的块。我可以在不到一秒钟的时间内直接下载该文件。上面的 php 脚本几乎不需要任何时间来运行。我知道客户端(浏览器)需要花费一些时间来扩充内容,但它必须少于一秒。那么什么需要15秒!有没有其他工具可以用来检查这个?
我知道我可以在 apache 中设置标头变量,但我无权访问它,并且在 php 中执行它在功能上是等效的,对吧?这些是要设置的正确标题吗?