content-length ヘッダーを設定し、チャンク転送エンコードを使用することは可能ですか? そうすることで、チャンクを使用するときにクライアント側で応答の長さがわからないという問題が解決しますか?
私が考えているシナリオは、転送するファイルが大きく、そのサイズを決定するのに問題はないが、大きすぎて完全にバッファリングできない場合です。(チャンクを使用していない場合は、応答全体を最初にバッファリングする必要がありますか?そうですか??)
ありがとう。
「メッセージには、Content-Length ヘッダー フィールドと非 ID 転送コーディングの両方を含めてはなりません。メッセージに非 ID 転送コーディングが含まれている場合、Content-Length を無視する必要があります。」( RFC 2616、セクション 4.4 )
ファイルのサイズを示すヘッダーはいつでも送信できます。Content response.addHeader("File-Size","size of the file");
-Length ヘッダーを無視します。
この値を読み取るには、クライアントの実装を微調整する必要がありますが、必要なことの両方を達成できます:)
Content-Length またはチャンクのいずれかを使用する必要がありますが、両方を使用する必要はありません。
事前に長さがわかっている場合は、その場でコンテンツを生成し、一度にすべてをバッファに入れることがない場合でも、チャンクの代わりに Content-Length を使用できます。
ただし、データが非常に大きい場合は、プロキシが処理できない可能性があるため、これを行うべきではありません。大規模なデータの場合、チャンクの方が安全です。