views:

1425

answers:

6

Hi -

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?

A: 

The headers are set as expected, w/ gzip accepted:

User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729) Accept-Language en-us,en;q=0.5 Accept-Encoding gzip,deflate Content-Type application/json; charset=utf-8

don't use an answer as a comment please...
TheSoftwareJedi
A: 

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?

Keltex
A: 

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

Sugendran
+2  A: 

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" />
stevemegson
A: 

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

Thomas Hansen
A: 

Thomas,

For performance enhacement of a web application developed in Asp.net with Ajax: 1. Do you advice to your Ajax with Json. In what cases "Yes" and in what cases "No" 2. Gzip increases the CPU utilisation by 30-100 times depending on page size, so it should be used carefully.In your reply, are you referring to a general Gzipped page or specifically Ajax with Json.

Cheers Rajiv