1

我正在从我的 REST Web 服务发送大数据(大约 600kb)作为响应。由于获得响应需要太多时间,我正在尝试压缩它。

在我的网站中,我有一个通用处理程序。对于这个处理程序,我从我的页面发出请求:

$.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.Jsondll,我将其序列化,然后将其返回给处理程序。

网站和 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。有什么我错过的吗?

4

0 回答 0