0

我有大量数据要发送到浏览器,可能是 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 中执行它在功能上是等效的,对吧?这些是要设置的正确标题吗?

4

1 回答 1

0

我刚刚发现了问题。filesize() 函数没有得到正确的路径,所以它打印为空白。我修复了它以发送正确的信息,现在它的工作速度要快得多。

于 2012-06-08T16:25:46.170 回答