Подтвердить что ты не робот

Как я могу заставить ASP.NET AJAX отправлять ответ JSON с помощью сжатия GZip?

У меня сжатие включено в IIS7, и оно работает как ожидалось во всех ответах, кроме тех, которые были созданы ASP.NET AJAX. У меня есть веб-служба, которая предоставляет данные клиенту. Когда веб-служба вызывается напрямую, она должным образом сжимается. Однако, когда он вызывается через ASP.NET AJAX, ответ JSON не сжимается.

Как я могу заставить ASP.NET AJAX отправлять свой ответ JSON с помощью сжатия GZip?

4b9b3361

Ответ 1

IIS7 использует кодирование содержимого, чтобы решить, сжимать ли ответ (предполагая, что браузер может принимать gzip). Они установлены в applicationHost.config, и по умолчанию список

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

Если вы вызываете веб-службу напрямую, ответ XML имеет тип содержимого text/xml, который сжимается. При вызове AJAX ответ JSON имеет тип содержимого application/json, поэтому он не сжимается. Добавление следующего в applicationHost.config должно исправить это...

     <add mimeType="application/json" enabled="true" />

Ответ 2

Какой браузер вы используете? Там ошибка в IE 6, которая вызывает ошибки в сжатии. Таким образом, ASP.NET AJAX отключает сжатие для браузеров IE 6:

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

Также вы включили сжатие для файлов ASMX?

Ответ 3

Последнее, что я проверил, gzipping - это то, что делает IIS (при правильной настройке) - и, конечно, когда браузер отправляет требуемые заголовки

Ответ 4

В общем, вы не хотите этого делать, если не будете возражать против того, чтобы заказывать величины количества мощности сервера в свои приложения...

Также, когда вы это делаете, становится проблемой не только сервер-процессор, но и клиент-процессор....

На этом заканчивается то, что ваше приложение становится медленнее, если вы GZip все ваши ответы Ajax...!