IIS7 динамическое сжатие контента и веб-сервисы - PullRequest
0 голосов
/ 14 мая 2010

Я переезжаю и старый asmx webservice на новый сервер с IIS7.Этот веб-сервис в основном отправляет большой набор данных (10 Мб +) в приложение winform.Старое решение было реализовано с использованием специального расширения мыла, которое сжимало содержимое перед отправкой потока клиенту.Клиент, конечно, реализовал то же пользовательское расширение мыла, чтобы распаковать поток в наборе данных.Все работало довольно хорошо в течение многих лет.Мой клиент не хочет менять обновление кода на WCF.Они просто хотят разместить старое приложение на новом сервере и использовать новые функции динамического сжатия контента.Мы тестируем что-то на тестовом сервере (win serv 2008), и кажется, что он работает довольно хорошо, даже если он кажется медленным: мы не видим никакой разницы в производительности (скорости) между несжатым и сжатым потоком.Вот вопрос.Где я должен поставить настройки?Большинство людей говорят, что я не могу поместить это в свой web.config;другие говорят, что это можно положить туда.Я немного смущен.Есть какие-нибудь трюки или вещи, которые я должен знать?Как насчет mimeTypes?Должен ли я установить некоторые параметры где-нибудь?... учитывая, что мой поток - это XML (набор данных) ??

1 Ответ

1 голос
/ 14 мая 2010

Если вы можете легко отключить код сжатия, то использовать функции сжатия IIS7 довольно просто.

Вы можете включать и отключать сжатие на уровне папок с помощью файла web.config в IIS7.

Тем не менее, конфигурация, которая контролирует, какие типы MIME сжаты, а какие нет, сохраняется на уровне веб-сервера.

Чтобы включить динамическое сжатие для данного сайта / папки vdir /, предполагая, что на сервере установлена ​​функция динамического сжатия, просто откройте свой сайт / папку в диспетчере IIS и нажмите значок «Сжатие». Здесь вы можете включить как статическое, так и динамическое сжатие.

На этом этапе проверьте, сработало ли это (т. Е. Что трафик сжимается). Если это так, то конфигурация динамического сжатия по умолчанию работает, и вы можете пойти и забрать ранний обед:)

Если нет, то вам нужно:

  • Нажмите на узел сервера (в корне) в диспетчере IIS. Затем откройте «Редактор конфигурации» (в нижнем ряду, обычно слева).
  • В раскрывающемся списке формы откройте узел system.webserver и нажмите на конечный узел httpCompression.
  • Теперь вы увидите все параметры конфигурации для сжатия для всего сервера - вам нужно открыть параметр «dynamicTypes».
  • Здесь вы можете добавить дополнительные правила для миметипов, которые нужно сжимать.

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

Я, например, добавил 4 дополнительных правила для наших серверов:

  • применение / JSON
  • Приложение / XML

А потом:

  • применение / JSON; кодировка = utf8
  • Приложение / XML; кодировка = utf8

Потому что, по какой-то причине, я обнаружил, что у mimetype моих ответов json / xml из .Net в конце был этот дополнительный бит 'charset ='. Если это произойдет, и его нет в списке правил, то сжатие IIS7 не сработает. Мне понадобилось много времени (и много пользы от Fiddler!), Чтобы понять это!

...