У меня включено сжатие в IIS7, и оно работает должным образом для всех ответов, кроме тех, которые созданы ASP.NET AJAX. У меня есть веб-сервис, который предоставляет данные клиенту. Когда веб-служба вызывается напрямую, она правильно сжимается. Однако, когда он вызывается через ASP.NET AJAX, ответ JSON не сжимается.
Как я могу заставить ASP.NET AJAX отправлять свой ответ JSON со сжатием GZip?
Вам нужно убедиться, что расширение файла .asmx находится в списке типов файлов для сжатия, это то, откуда берется ajax json.
Также убедитесь, что в запросе JSON есть, например, accept-encoding: gzip в заголовке HTTP.
Это должно работать из коробки. Чтобы убедиться, что мои ответы ASP.NET AJAX JSON используют сжатие GZip:
Скачать Fiddler (версия 2.1.9 есть последний)
Включите Fiddler в IE 7: Инструменты -> Fiddler2
Поскольку весь трафик маршрутизируется через прокси, вам необходимо настроить Fiddler для применения accept-encoding: Gzip в заголовке HTTP. Правила -> Применить кодировку GZip
Посетите ваш сайт через скрипач. Если ваш сайт находится на локальном хосте, IE7 не будет перенаправлять его через скрипач. В Fiddler 2.1.8 есть отличная функция, которая отображает localhost (127,0.0.1) на http: //ipv4.fiddler и http: //ipv6.fiddler.
Найдите запрос asmx в сеансах Fiddler.
Чтобы убедиться, что запрос был сделан в кодировке gzip, посмотрите заголовки запроса на верхней панели. Вы должны увидеть "Клиент: accept-encoding: gzip, deflate"
Чтобы убедиться, что ответ был отправлен с кодировкой gzip, посмотрите заголовки ответа на нижней панели. Вы должны увидеть "Транспорт: кодирование содержимого: gzip"
У меня IIS 7 установлен на Vista Business SP1 без дополнительной настройки, мой проект использует ASP.NET AJAX со стандартными веб-службами.
Надеюсь, это поможет!