How can I get ASP.NET AJAX to send its JSON response with GZip compression?

前端 未结 4 594
囚心锁ツ
囚心锁ツ 2021-02-05 19:35

I have compression enabled within IIS7 and it works as expected on all responses except for those constructed by ASP.NET AJAX. I have a web service that provides data to the cl

相关标签:
4条回答
  • 2021-02-05 20:08

    In general you don't want to do this unless you wouldn't mind throwing orders of magnitudes the amount of server power into your apps...

    Also not only server-CPU but also client-CPU becomes a problem when you do this....

    This concludes with that your app becomes WAY slower if you GZip all your Ajax Responses...!

    0 讨论(0)
  • 2021-02-05 20:16

    What browser are you using? There's a bug in IE 6 that causes errors in compression. So ASP.NET AJAX turns off compression to IE 6 browsers:

    http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx

    Also, did you enable compression for ASMX files?

    0 讨论(0)
  • 2021-02-05 20:16

    Last I checked, the gzipping was something that IIS does (when setup correctly) - and of course when the browser sends the required headers

    0 讨论(0)
  • 2021-02-05 20:19

    IIS7 uses the content-encoding to decide whether to compress the response (assuming of course that the browser can accept gzip). They're set in applicationHost.config, and by default the list is

    <dynamicTypes>
         <add mimeType="text/*" enabled="true" />
         <add mimeType="message/*" enabled="true" />
         <add mimeType="application/x-javascript" enabled="true" />
         <add mimeType="*/*" enabled="false" />
    </dynamicTypes>
    

    If you call the web service directly, the XML response has a content-type of text/xml, which gets compressed. When called by AJAX, the JSON response has a content type of application/json, so it isn't compressed. Adding the following to applicationHost.config should fix that...

         <add mimeType="application/json" enabled="true" />
    
    0 讨论(0)
提交回复
热议问题