Kyle
Kyle

Reputation:

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

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 client. When the web service is called directly, it is properly compressed. However, when it is called via ASP.NET AJAX, the JSON response is not compressed.

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

Upvotes: 12

Views: 5784

Answers (4)

Thomas Hansen
Thomas Hansen

Reputation: 5513

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...!

Upvotes: 0

stevemegson
stevemegson

Reputation: 12103

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" />

Upvotes: 5

Sugendran
Sugendran

Reputation: 2109

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

Upvotes: 0

Keltex
Keltex

Reputation: 26436

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?

Upvotes: 1

Related Questions