ブラウザに送信するデータが大量にあり、おそらく 100 MB 程度です。ストリーミングをシミュレートできるように、それらを小さなファイルにまとめました。それぞれ 500kb のファイルが 200 個あるとします。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 のネットワーク タブを見ると、100kb のチャンクを取得するのに 15 秒ほどかかっています。そのファイルを 1 秒もかからずに直接ダウンロードできます。上記の php スクリプトの実行にはほとんど時間がかかりません。クライアント (ブラウザー) がコンテンツを膨らませるのに少し時間がかかることはわかっていますが、1 秒未満である必要があります。では、なんと 15 秒もかかっています。これを確認するために使用できる他のツールはありますか?
ヘッダー変数をApacheで設定できることは知っていますが、それにアクセスすることはできません.phpでそれを行うことは機能的に同等ですよね?それらは設定する正しいヘッダーですか?