REST Web サービスから大きなデータ (約 600kb) を応答として送信しています。応答を得るのに時間がかかりすぎるため、圧縮しようとしています。
私の Web サイトには、汎用ハンドラーがあります。このハンドラーに対して、私は自分のページからリクエストを行っています:
$.getJSON('Handler.ashx', data, function (fileBytesArray) {
// Process the data
})
.done(function () { console.log("second success"); })
.fail(function () { console.log("error"); })
.always(function () { console.log("complete"); });
ハンドラーはリクエストを受け取り、REST サービスに転送します。ハンドラーのコード:
public void ProcessRequest(HttpContext context)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("http://localhost/MyRestWebService/MyRestWebService.svc/DownloadFile"));
req.ContentType = "application/json; charset=utf-8";
req.Timeout = 60000;
using (WebResponse resp = req.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
string responceFromService = reader.ReadToEnd();
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Write(responceFromService);
}
私のサービス(DownloadFile()
メソッド内)では、ファイル全体を読み取ります。次に、NewtonSoft.Json
dllを使用してシリアル化し、ハンドラーに返します。
Web サイトと REST サービスの両方が同じサーバー上にあります。applicationHost.config
そのサーバー上のファイルを変更して変更しました:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
<add mimeType="application/x-javascript" enabled="true"/>
<add mimeType="application/json; charset=utf-8" enabled="true"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
<add mimeType="application/x-javascript" enabled="true"/>
<add mimeType="application/json; charset=utf-8" enabled="true"/>
</staticTypes>
</httpCompression>
に何も入っfirebug
ていないことに気付きました。見逃したものはありますか?Content Encoding
Response header