1

私の ASP.NET アプリは JSON オブジェクトをユーザーに返します。これには、バイナリ エンコードされたデータが含まれています。このため、HTTP 圧縮を有効にすることにしました。問題は Content-Length で始まりました。

圧縮を有効にすると、応答が送信され、接続がすぐに閉じられない間、Content-Length ヘッダーは無視されます。すべてのデータが送信された後、接続は約 15 秒間開いたままです。

HTTP 圧縮を有効にしたいのですが、Content-Length ヘッダーの問題を解決する方法がわかりません。

context.Response.AddHeader("Content-Length", jsonObject.ToString().Length.ToString());
context.Response.Write(jsonObject);
context.Response.Flush();
context.Response.Close();
4

1 に答える 1

2

Content-Length圧縮されたバイトである場合に転送されるデータの長さを表します。この SO の質問を参照してください。その回答は、関連する RFC にリンクしています: http 圧縮を使用する場合の content-length

HTTP 圧縮が Web サーバー経由で (コードではなく) 発生している場合は、自分で content-length ヘッダーを追加してみることをお勧めします。うまくいけば、Web サーバーはそれを正しく追加します。

これは、 http://httpd.apache.org/で Chrome を使用して確認できます。開発者コンソールを見ると、Content-Length圧縮されていない実際のページよりもはるかに小さいことがわかります。

于 2011-10-03T10:33:28.060 に答える