提供されるファイルの content-length の設定に関する記事をいくつか読みました。チャンクダウンロードと比較して、いくつかの利点があります。コンテンツの長さが不明な場合、サーバーはチャンクを提供します(チャンクのサイズはとにかくわかりません)。
PHP では、ob_gzhandler を使用して、html、js、css ファイル、およびその他のテキストベースのコンテンツを gzip します。gzip 出力の前にraw content-lengthを設定すると、長さが gzip された出力の長さと一致しないため、奇妙な副作用が発生します。遅延が発生するか、ブラウザーがエンコード エラーを報告します。
gzip圧縮後にコンテンツの長さを設定して、正しいサイズが報告されるようにするトリック(stackoverflowでも)を見ました。しかし、これを行うと、コンテンツは圧縮されなくなります。
問題は、この動作が正しいかどうかです。gzip されたコンテンツは常にチャンクされて送信されますか? content-length は gzip されていないファイルにのみ必要ですか?
コードの一部を次に示します。
1 gzip およびチャンク化されたファイル転送の結果:
ob_start('ob_gzhandler');
echo $sResult;
2 content-length が指定された通常のファイル転送になります (ただし、gziped と content-length は想定されます):
ob_start('ob_gzhandler');
echo $sResult;
header('Content-Length: '.ob_get_length());
ここに http ヘッダーの結果のいくつかの写真があります:
1
2