У меня сжатие JSON настроено для моего веб-API в Azure, следуя этой статье MSDN Use AppCmd.exe to Configure IIS at Startup.Контент сжатия JSON перестает работать через некоторое время с Azure WebRole
Я публикую свои роли и начинаю тестирование, и все хорошо согласуется с Fiddler.
Ниже приведен пример запроса заголовка:
GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1
Accept: application/json
Host: x.cloudapp.net:8080
Accept-Encoding: gzip
Вот заголовок пример ответа:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:38 GMT
Content-Length: 2472
Только несколько Web API вызовы позже (например, 6 секунд) все ответы уже не сжат.
заголовок запроса:
GET http://xyz HTTP/1.1
Accept: application/json
Host: sp-test-server2012.cloudapp.net:8080
Accept-Encoding: gzip
заголовок Ответ:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:44 GMT
Content-Length: 16255
Примечание недостающее Content-Encoding во втором ответе.
Таким образом, я получаю несколько сотен вызовов, которые сжимаются, а затем больше всего остальное несжаты. Время от времени я вижу, что другой ответ сжат. Или, если я прекратил тестирование некоторое время, а затем возобновить, кажется, что сжатие начинается снова.
Сжатие в IIS 8 «дросселировано» или что-то в этом роде? Скажем, если CPU почти полностью отключен, IIS перестанет сжиматься?
При мониторинге моего WebRole в Azure использование моего процессора может превышать 90% во время моего тестирования большой нагрузки. Трудно сказать, коррелирует ли это с отсутствием сжатия результатов. Использование памяти не является проблемой вообще.
Я бы хотел (а) быть более надежным и прогнозируемым!