Http Compression <httpCompression>

Общие сведения

Элемент <httpCompression> задает параметры сжатия HTTP для служб IIS 7. Сжатие HTTP может ускорить передачу данных между IIS и клиентскими браузерами, которые могут принимать сжатые файлы.

Примечание

HTTP-клиент должен инициировать обмен данными для сжатого содержимого путем отправки соответствующего заголовка HTTP Accept-encoding. Если клиент не поддерживает сжатие HTTP, он не будет передавать этот заголовок, и IIS 7 всегда будет возвращать несжатое содержимое.

Существует два разных типа сжатия, которые используются СЛУЖБАми IIS 7:

  • Статическое сжатие:

    IIS 7 кэширует сжатое статическое содержимое по пути, указанному атрибутом каталога , что повышает производительность сжатия, устраняя необходимость повторного сжатия содержимого, которое уже было сжато. После сжатия файла iis 7 последующие запросы получают сжатую копию файла из каталога кэша.

    Атрибуты staticCompressionEnableCpuUsage и staticCompressionDisableCpuUsage указывают, когда IIS 7 будет сжимать статические файлы на основе использования ЦП.

    Статическое сжатие следует использовать с файлами, которые обычно не изменяются, например HTML-файлы (*.html, *.htm), текстовые файлы (*.txt), документы Microsoft Office (*.doc, *.xls, *.ppt) и т. д. Размер этих файлов можно уменьшить за счет сжатия, что сокращает время загрузки клиентских запросов и уменьшает пропускную способность на сервере.

    Примечание

    Файлы изображений, такие как файлы *.jpg и *.png, также являются статическими файлами, но обычно они не используют сжатие HTTP, так как эти файлы изображений уже сжаты.

  • Динамическое сжатие:

    В отличие от статического сжатия, IIS 7 выполняет динамическое сжатие каждый раз, когда клиент запрашивает содержимое, но сжатая версия не кэшируется на диск. Это изменение происходит из-за основного различия между статическим и динамическим содержимым. Статическое содержимое не изменяется. Однако динамическое содержимое обычно создается приложением и поэтому часто меняется, например страницы ASP или ASP.NET содержимое. Так как динамическое содержимое должно часто меняться, IIS 7 не кэшируют его.

    Атрибуты dynamicCompressionEnableCpuUsage и dynamicCompressionDisableCpuUsage указывают, когда IIS 7 будет сжимать динамические файлы на основе использования ЦП.

IIS 7 поддерживает две стандартные отраслевые схемы сжатия:

Каждую из этих двух схем сжатия можно включить с помощью <schemes> элемента <httpCompression> элемента .

Примечание

<httpCompression> Хотя элемент задает параметры сжатия HTTP для служб IIS 7, <элемент urlCompression> указывает, включено ли сжатие для пространства имен URL-адресов.

Совместимость

Версия Примечания
IIS 10.0 Элемент <httpCompression> не был изменен в IIS 10.0.
IIS 8,5 Атрибут staticCompressionIgnoreHitFrequency был добавлен в IIS 8.5.
IIS 8,0 Элемент <httpCompression> не был изменен в IIS 8.0.
IIS 7,5 В IIS 7.5 значение по умолчанию для атрибута minFileSizeForComp было изменено, и dynamicCompressionBufferLimit атрибут был добавлен.
IIS 7.0 Элемент <httpCompression> появился в IIS 7.0.
IIS 6,0 Элемент <httpCompression> заменяет следующие свойства метабазы IIS 6.0:
  • HcCacheControlHeader
  • HcCompressionDirectory
  • HcDoDiskSpaceLimiting
  • HcExpiresHeader
  • HcMaxDiskSpaceUsage
  • HcMinFileSizeForComp
  • HcNoCompressionForHttp10
  • HcNoCompressionForProxies
  • HcNoCompressionForRange
  • HcSendCacheHeaders

Настройка

Сжатие HTTP обычно доступно в стандартной установке IIS 7 и более поздних версий. Однако по умолчанию устанавливается только статическое сжатие. Чтобы установить статическое или динамическое сжатие, выполните следующие действия.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.
  2. В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
  3. В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
  4. На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, затем — Производительность, а затем выберите Сжатие статического содержимого и (или) Динамическое сжатие содержимого. Щелкните Далее.
    Снимок экрана: веб-сервер и узел производительности с выбранным параметром .
  5. На странице Выбор компонентов нажмите кнопку Далее.
  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите пункт панель управления.
  2. В панель управления щелкните Программы и компоненты, а затем — Включить или выключить компоненты Windows.
  3. Разверните узел Службы IIS, Веб-службы, Функции производительности, а затем выберите Динамическое сжатие содержимого и (или) Сжатие статического содержимого.
    Снимок экрана: развернутая область Функций производительности и Интернета с выбранными параметрами
  4. Нажмите кнопку ОК.
  5. Щелкните Закрыть.

Windows Server 2008 или Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, наведите указатель мыши на пункт Администрирование, а затем щелкните диспетчер сервера.
  2. В области иерархии диспетчер сервера разверните узел Роли, а затем щелкните Веб-сервер (IIS) .
  3. В области Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
  4. На странице Выбор служб ролеймастера добавления служб ролей выберите Динамическоесжатие содержимого , если требуется установить динамическое сжатие, и Сжатие статического содержимого , если требуется установить статическое сжатие, а затем нажмите кнопку Далее.
    Снимок экрана: узел производительности, развернутый на странице
  5. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  6. На странице Результаты нажмите кнопку Закрыть.

Windows Vista или Windows 7

  1. На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
  2. В панель управления щелкните Программы и компоненты, а затем — Включить или отключить компоненты Windows.
  3. Разверните узел Службы IIS, Затем — Службы Интернета, а затем Функции производительности.
  4. Выберите Http Compression Dynamic (Динамическое сжатие HTTP), если требуется установить динамическое сжатие, и Статическое сжатие содержимого , если вы хотите установить статическое сжатие.
    Снимок экрана: развернутый узел
  5. Нажмите кнопку ОК.

Инструкции

Включение или отключение статического и динамического сжатия для сайта или приложения

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения перейдите к подключению, сайту, приложению или каталогу, для которого требуется включить сжатие.

  3. На панели Главная дважды щелкните Сжатие.
    Снимок экрана: домашняя страница веб-сайта по умолчанию с выбранным параметром

  4. В области Сжатие проверка поля для включения статического или динамического сжатия или удалите проверка метки, чтобы отключить статическое или динамическое сжатие.
    Снимок экрана: область сжатия с выбранными полями

  5. Выполнив описанные выше действия, нажмите кнопку Применить в области Действия .

Включение или отключение статического и динамического сжатия для сервера

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения выделите имя сервера.

  3. На домашней панели сервера дважды щелкните Сжатие.
    Снимок экрана: домашняя панель серверов с выделенным элементом Сжатия.

  4. В области Сжатие проверка поля для включения статического или динамического сжатия или удалите проверка метки, чтобы отключить статическое или динамическое сжатие.
    Снимок экрана: страница сжатия с выбранными полями Включить динамическое сжатие содержимого и Включить сжатие статического содержимого.

  5. Выполнив описанные выше действия, нажмите кнопку Применить в области Действия .

Настройка staticCompressionIgnoreHitFrequency

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения выберите сервер и дважды щелкните редактор конфигурации.

  3. В редакторе конфигурации в разделе выберите system.webServer, а затем — httpCompression.

  4. Для staticCompressionIgnoreHitFrequency введите True , чтобы отключить поведение, согласно которому статический файл сжимается только в том случае, если он попадает определенное количество раз в течение определенного периода времени, или введите False , чтобы включить поведение.
    Снимок экрана: страница редактора конфигураций со значением True для параметра

  5. В области Действия нажмите кнопку Применить.

Конфигурация

Атрибуты

Атрибут Описание
cacheControlHeader Необязательный строковый атрибут.

Указывает директиву, добавляемую службами IIS в заголовок Cache-Control, который переопределяет заголовок HTTP Expires. Этот атрибут гарантирует, что старые клиенты и прокси-серверы не будут пытаться кэшировать сжатые файлы. Чтобы включить этот параметр, необходимо задать для атрибута sendCacheHeadersзначение true. Служба WWW должна быть перезапущена, прежде чем изменения этого свойства вступают в силу.

Значение по умолчанию — max-age=86400.
directory Необязательный строковый атрибут.

Указывает каталог, в котором временно хранятся и кэшируются сжатые версии статических файлов.

Примечание: В IIS 6.0 по умолчанию для временных сжатых файлов IIS использовался каталог %windir%\IIS Temporary Compressed Files.

Значение по умолчанию — %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files.
doDiskSpaceLimiting Дополнительный логический атрибут.

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

Значение по умолчанию — true.
dynamicCompressionBufferLimit Необязательный атрибут uint.

Указывает максимальный объем динамически сжатых данных, которые службы IIS будут буферировать перед очисткой буфера на клиенте. Это уменьшает объем памяти, необходимый для выполнения динамического сжатия.

Примечание: Этот атрибут был добавлен в IIS 7.5.

Значение по умолчанию — 65536.
dynamicCompressionDisableCpuUsage Необязательный атрибут uint.

Указывает процент использования ЦП, при котором будет отключено динамическое сжатие.

Примечание: Этот атрибут выступает в качестве верхнего предела ЦП, при котором отключается динамическое сжатие. Если загрузка ЦП падает ниже значения, указанного в атрибуте dynamicCompressionEnableCpuUsage , динамическое сжатие будет снова включено.

Значение по умолчанию — 90.
dynamicCompressionEnableCpuUsage Необязательный атрибут uint.

Указывает процент использования ЦП, ниже которого будет включено динамическое сжатие. Значение должно находиться в диапазоне от 0 до 100. Средняя загрузка ЦП рассчитывается каждые 30 секунд.

Примечание: Этот атрибут выступает в качестве нижнего предела ЦП, ниже которого включено динамическое сжатие. Если загрузка ЦП превышает значение, указанное в атрибуте dynamicCompressionDisableCpuUsage , динамическое сжатие будет отключено.

Значение по умолчанию — 50.
expiresHeader Необязательный строковый атрибут.

Указывает содержимое заголовка HTTP Expires, отправляемого со всеми запрошенными сжатыми файлами, а также заголовок Cache-Control, указанный в атрибуте cacheControlHeader . Такое сочетание заголовков гарантирует, что старые клиенты и прокси-серверы не будут пытаться кэшировать сжатые файлы. Чтобы включить этот параметр, необходимо задать для атрибута sendCacheHeadersзначение true. Прежде чем изменения этого свойства вступают в силу, необходимо перезапустить службу веб-публикации (WWW).

Значение по умолчанию — Wed, 01 Jan 1997 12:00:00 GMT.
maxDiskSpaceUsage Необязательный атрибут uint.

Указывает количество мегабайт дискового пространства, которое сжатые файлы могут занимать в каталоге сжатия. Если пространство, используемое сжатыми файлами, превышает 90 процентов от значения этого атрибута, СЛУЖБЫ IIS удаляют файлы, которые недавно использовались, пока не будет достигнут 90-процентный уровень использования.

Примечание: В IIS 6.0 это ограничение было выражено в байтах; в IIS 7 он выражается в мегабайтах. В IIS 7 ограничение применяется для каждого пула приложений.

Значение по умолчанию — 100.
minFileSizeForComp Необязательный атрибут uint.

Указывает минимальное количество килобайт, которое должен содержать файл, чтобы использовать сжатие по запросу.

Значение по умолчанию для IIS 7.5 — 2700; для IIS 7.0 значением по умолчанию было 256.
noCompressionForHttp10 Дополнительный логический атрибут.

Указывает, отключено ли сжатие для запросов, содержащих номер версии HTTP 1.0.

Примечание: Некоторые клиенты HTTP 1.0 неправильно обрабатывают кэширование сжатых объектов. Этот параметр можно использовать, чтобы избежать возврата сжатого файла клиенту, который не может его распаковать.

Значение по умолчанию — true.
noCompressionForProxies Дополнительный логический атрибут.

Указывает, отключен ли ответ HTTP 1.1 для запросов на сжатие, поступающих через прокси-серверы.

Примечание: Некоторые прокси-серверы HTTP неправильно обрабатывают кэширование сжатых объектов. Этот параметр можно использовать, чтобы избежать возврата сжатого файла на прокси-сервер, который не может распаковать его.

Значение по умолчанию — true.
noCompressionForRange Дополнительный логический атрибут.

Указывает, отключено ли сжатие для HTTP-запросов, включающих заголовок Range.

Примечание: Некоторые клиенты не могут правильно обрабатывать запросы диапазона. Этот параметр можно использовать, чтобы избежать возврата сжатого файла клиенту, который не может его распаковать.

Значение по умолчанию — true.
sendCacheHeaders Дополнительный логический атрибут.

Указывает, отправляются ли заголовки, настроенные в cacheControlHeader и expiresHeader с каждым сжатым ответом.

Значение по умолчанию — false.
staticCompressionDisableCpuUsage Необязательный атрибут uint.

Указывает процент использования ЦП, при котором отключается статическое сжатие. Значение должно находиться в диапазоне от 0 до 100. Средняя загрузка ЦП рассчитывается каждые 30 секунд.

Примечание: Это свойство выступает в качестве верхнего предела ЦП, при котором отключается статическое сжатие. Если загрузка ЦП падает ниже значения, указанного в атрибуте staticCompressionEnableCpuUsage , статическое сжатие будет повторно включаемым.

Значение по умолчанию — 100.
staticCompressionEnableCpuUsage Необязательный атрибут uint.

Указывает процент использования ЦП, при котором включено статическое сжатие. Значение должно находиться в диапазоне от 0 до 100. Средняя загрузка ЦП рассчитывается каждые 30 секунд.

Примечание: Это свойство выступает в качестве нижнего предела ЦП, ниже которого включено статическое сжатие. Если загрузка ЦП превышает значение, указанное в атрибуте staticCompressionDisableCpuUsage , статическое сжатие будет отключено.

Значение по умолчанию — 50.
staticCompressionIgnoreHitFrequency Дополнительный логический атрибут.

Если задано значение True, отключает режим сжатия статического файла, только если он попадает в определенное количество раз в течение определенного периода времени. Вы можете столкнуться с обстоятельствами, в которых требуется всегда сжимать статическое содержимое для снижения использования пропускной способности. Например, может потребоваться всегда сжимать статическое содержимое, если система использует подсистему балансировки нагрузки с пограничным кэшированием между веб-сервером и инициатором запроса, что приводит к кэшированию несжатого файла на пограничном сервере, так как последующие запросы не доходят до веб-сервера.

Если поведение не отключено, скорость попаданий, превышающая или равная двум попаданиям в 10 секунд, приведет к сжатию статического содержимого. Меньшая частота попаданий приведет к тому, что содержимое не сжимается.

Значение по умолчанию — False.

Дочерние элементы

Элемент Описание
scheme Необязательный элемент.

Указывает схему сжатия (Gzip или Deflate), используемый IIS для сжатия клиентских запросов.
dynamicTypes Необязательный элемент.

Задает параметры конфигурации для динамического сжатия.
staticTypes Необязательный элемент.

Задает параметры конфигурации для статического сжатия.

Образец конфигурации

Следующий элемент по умолчанию <httpCompression> настраивается в файле ApplicationHost.config в IIS 7. Этот раздел конфигурации наследует параметры конфигурации по умолчанию, если не используется <clear> элемент .

<httpCompression
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
   <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
   <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </dynamicTypes>
   <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </staticTypes>
</httpCompression>

Пример кода

Следующие примеры кода добавляют типы MIME для документов Office 2003 в список типов динамического сжатия.

Примечание

Документы Office 2007 используют встроенное сжатие, поэтому их не нужно сжимать с помощью IIS.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/msword',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/vnd.ms-powerpoint',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/vnd.ms-excel',enabled='True']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpCompressionSection = config.GetSection("system.webServer/httpCompression");
         ConfigurationElementCollection dynamicTypesCollection = httpCompressionSection.GetCollection("dynamicTypes");

         ConfigurationElement addElement = dynamicTypesCollection.CreateElement("add");
         addElement["mimeType"] = @"application/msword";
         addElement["enabled"] = true;
         dynamicTypesCollection.Add(addElement);

         ConfigurationElement addElement1 = dynamicTypesCollection.CreateElement("add");
         addElement1["mimeType"] = @"application/vnd.ms-powerpoint";
         addElement1["enabled"] = true;
         dynamicTypesCollection.Add(addElement1);

         ConfigurationElement addElement2 = dynamicTypesCollection.CreateElement("add");
         addElement2["mimeType"] = @"application/vnd.ms-excel";
         addElement2["enabled"] = true;
         dynamicTypesCollection.Add(addElement2);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
      Dim dynamicTypesCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection("dynamicTypes")

      Dim addElement As ConfigurationElement = dynamicTypesCollection.CreateElement("add")
      addElement("mimeType") = "application/msword"
      addElement("enabled") = True
      dynamicTypesCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = dynamicTypesCollection.CreateElement("add")
      addElement1("mimeType") = "application/vnd.ms-powerpoint"
      addElement1("enabled") = True
      dynamicTypesCollection.Add(addElement1)

      Dim addElement2 As ConfigurationElement = dynamicTypesCollection.CreateElement("add")
      addElement2("mimeType") = "application/vnd.ms-excel"
      addElement2("enabled") = True
      dynamicTypesCollection.Add(addElement2)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var dynamicTypesCollection = httpCompressionSection.ChildElements.Item("dynamicTypes").Collection;

var addElement = dynamicTypesCollection.CreateNewElement("add");
addElement.Properties.Item("mimeType").Value = "application/msword";
addElement.Properties.Item("enabled").Value = true;
dynamicTypesCollection.AddElement(addElement);

var addElement1 = dynamicTypesCollection.CreateNewElement("add");
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint";
addElement1.Properties.Item("enabled").Value = true;
dynamicTypesCollection.AddElement(addElement1);

var addElement2 = dynamicTypesCollection.CreateNewElement("add");
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel";
addElement2.Properties.Item("enabled").Value = true;
dynamicTypesCollection.AddElement(addElement2);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set dynamicTypesCollection = httpCompressionSection.ChildElements.Item("dynamicTypes").Collection

Set addElement = dynamicTypesCollection.CreateNewElement("add")
addElement.Properties.Item("mimeType").Value = "application/msword"
addElement.Properties.Item("enabled").Value = True
dynamicTypesCollection.AddElement(addElement)

Set addElement1 = dynamicTypesCollection.CreateNewElement("add")
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint"
addElement1.Properties.Item("enabled").Value = True
dynamicTypesCollection.AddElement(addElement1)

Set addElement2 = dynamicTypesCollection.CreateNewElement("add")
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel"
addElement2.Properties.Item("enabled").Value = True
dynamicTypesCollection.AddElement(addElement2)

adminManager.CommitChanges()

Следующие примеры кода добавляют типы MIME для документов Office 2003 в список типов статического сжатия.

(> [! ПРИМЕЧАНИЕ]

Документы Office 2007 используют встроенное сжатие, поэтому их не нужно сжимать с помощью IIS.)

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/msword',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/vnd.ms-powerpoint',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/vnd.ms-excel',enabled='True']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpCompressionSection = config.GetSection("system.webServer/httpCompression");
         ConfigurationElementCollection staticTypesCollection = httpCompressionSection.GetCollection("staticTypes");

         ConfigurationElement addElement = staticTypesCollection.CreateElement("add");
         addElement["mimeType"] = @"application/msword";
         addElement["enabled"] = true;
         staticTypesCollection.Add(addElement);

         ConfigurationElement addElement1 = staticTypesCollection.CreateElement("add");
         addElement1["mimeType"] = @"application/vnd.ms-powerpoint";
         addElement1["enabled"] = true;
         staticTypesCollection.Add(addElement1);

         ConfigurationElement addElement2 = staticTypesCollection.CreateElement("add");
         addElement2["mimeType"] = @"application/vnd.ms-excel";
         addElement2["enabled"] = true;
         staticTypesCollection.Add(addElement2);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
      Dim staticTypesCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection("staticTypes")

      Dim addElement As ConfigurationElement = staticTypesCollection.CreateElement("add")
      addElement("mimeType") = "application/msword"
      addElement("enabled") = True
      staticTypesCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = staticTypesCollection.CreateElement("add")
      addElement1("mimeType") = "application/vnd.ms-powerpoint"
      addElement1("enabled") = True
      staticTypesCollection.Add(addElement1)

      Dim addElement2 As ConfigurationElement = staticTypesCollection.CreateElement("add")
      addElement2("mimeType") = "application/vnd.ms-excel"
      addElement2("enabled") = True
      staticTypesCollection.Add(addElement2)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var staticTypesCollection = httpCompressionSection.ChildElements.Item("staticTypes").Collection;

var addElement = staticTypesCollection.CreateNewElement("add");
addElement.Properties.Item("mimeType").Value = "application/msword";
addElement.Properties.Item("enabled").Value = true;
staticTypesCollection.AddElement(addElement);

var addElement1 = staticTypesCollection.CreateNewElement("add");
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint";
addElement1.Properties.Item("enabled").Value = true;
staticTypesCollection.AddElement(addElement1);

var addElement2 = staticTypesCollection.CreateNewElement("add");
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel";
addElement2.Properties.Item("enabled").Value = true;
staticTypesCollection.AddElement(addElement2);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set staticTypesCollection = httpCompressionSection.ChildElements.Item("staticTypes").Collection

Set addElement = staticTypesCollection.CreateNewElement("add")
addElement.Properties.Item("mimeType").Value = "application/msword"
addElement.Properties.Item("enabled").Value = True
staticTypesCollection.AddElement(addElement)

Set addElement1 = staticTypesCollection.CreateNewElement("add")
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint"
addElement1.Properties.Item("enabled").Value = True
staticTypesCollection.AddElement(addElement1)

Set addElement2 = staticTypesCollection.CreateNewElement("add")
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel"
addElement2.Properties.Item("enabled").Value = True
staticTypesCollection.AddElement(addElement2)

adminManager.CommitChanges()