Поделиться через


Схема схемы <>

Обзор

Элемент <scheme> элемента <httpCompression> задает следующие параметры для схем сжатия GNU zip (Gzip) и Deflate в службы IIS (IIS) 7:

  • Атрибуты имени и библиотеки dll соответственно указывают имя и библиотеку DLL поставщика схемы сжатия. IIS 7 поддерживает сжатие Gzip и Deflate, и обе схемы сжатия в настоящее время реализуются в %windir%\system32\inetsrv\gzip.dll.

  • Атрибут doStaticCompression указывает, включена ли статическое сжатие для схемы сжатия, указанной атрибутом имени. Параметр doStaticCompression имеет значение true , указывает, что статическое содержимое будет сжиматься при запросе клиента. Если статическое сжатие включено, каждый запрос на статическое содержимое, содержащее значение "Accept-Encoding: gzip" или "Accept-Encoding: deflate", приводит к тому, что содержимое сжимается до тех пор, пока схема сжатия, указанная в заголовке, включена в IIS. Если запрос не содержит этот заголовок, или заголовок указывает схему сжатия, которая не включена в IIS, содержимое не сжимается.

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

  • Атрибут doDynamicCompression указывает, включено ли динамическое сжатие для схемы сжатия, указанной атрибутом имени . Если задать значение doDynamicCompression , значение true указывает, что динамическое содержимое будет сжиматься при запросе клиента. Если динамическое сжатие включено, каждый запрос динамического содержимого, содержащего заголовок Accept-Encoding: gzip или Accept-Encoding: deflate, приводит к сжатие содержимого, если схема сжатия, указанная в заголовке, включена в IIS. Если запрос не содержит этот заголовок, или заголовок указывает схему сжатия, которая не включена в IIS, содержимое не сжимается.

    Примечание.

    Так как динамическое содержимое всегда изменяется по определению, службы IIS не кэшируют сжатые версии динамического содержимого. Динамическое сжатие потребляет значительные ресурсы ЦП и памяти и должно использоваться только на серверах с медленными сетевыми подключениями и временем ЦП для экономии.

  • Атрибуты dynamicCompressionLevel и staticCompressionLevel указывают уровни сжатия для схем сжатия, если службы IIS соответственно сжимают динамическое или статическое содержимое. Более низкие уровни сжатия создают немного большие сжатые файлы, но с меньшим общим воздействием на ресурсы ЦП и памяти. Более высокий уровень сжатия обычно приводит к уменьшению сжатых файлов, но с более высоким потреблением ЦП и памяти.

Примечание.

По умолчанию в IIS 7 доступна только схема сжатия Gzip. Чтобы включить схему сжатия Deflate программным способом, см . раздел "Примеры кода" этого документа.

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

Версия Примечания.
IIS 10.0 Элемент <scheme> не был изменен в IIS 10.0.
IIS 8.5 Элемент <scheme> не был изменен в IIS 8.5.
IIS 8.0 Элемент <scheme> не был изменен в IIS 8.0.
IIS 7.5 Элемент <scheme> не был изменен в IIS 7.5.
IIS 7.0 Элемент <scheme> элемента <httpCompression> был представлен в IIS 7.0.
IIS 6,0 Элемент <scheme> заменяет следующие свойства метабазы IIS 6.0:
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

Настройка

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

Windows Server 2012 или Windows Server 2012 R2

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

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель на левый нижний угол, щелкните правой кнопкой "Пуск" и щелкните панель управления.
  2. В панель управления щелкните "Программы и компоненты", а затем выберите "Включить или отключить функции Windows".
  3. Разверните службы IIS, разверните веб-службы World Wide, разверните функции производительности, а затем выберите динамическое сжатие содержимого и (или) сжатие статического содержимого.
    Снимок экрана: панель
  4. Щелкните OK.
  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, а затем веб-службы World Wide, а затем функции производительности.
  4. Если вы хотите установить динамическое сжатие и сжатие статического содержимого, выберите "Динамический сжатие HTTP", если требуется установить статическое сжатие.
    Снимок экрана: включение и выключение компонентов Windows с развернутой узлом функций производительности и выбранным параметром H T P Common Dynamics.
  5. Щелкните OK.

Инструкции

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

Настройка

Атрибуты

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

Указывает полный путь к файловой системе и имя файла библиотеки DLL сжатия, связанной со схемой сжатия. Служба веб-публикации world Wide Web Publishing Service (WWW) должна быть перезапущена, прежде чем все изменения этого атрибута вступили в силу.
doDynamicCompression Дополнительный логический атрибут.

Указывает, сжимаются ли ответы на запросы динамического содержимого, например скрипты в расширениях Active Server Pages (ASP) и ISAPI. Если это значение изменяется на отдельном уровне схемы сжатия, служба WWW должна быть перезапущена до того, как изменения вступили в силу.

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

Указывает, сжимает ли службы IIS ответы на запросы статического содержимого. Так как этот атрибут не может быть унаследован, он должен иметь значение true как на глобальном уровне (httpCompression>), так и на уровне отдельной схемы, если для атрибута имени задано значение Gzip.< Если это значение изменяется на отдельном уровне схемы сжатия, служба WWW должна быть перезапущена до того, как изменения вступили в силу.

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

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

Указывает уровень сжатия схемы сжатия при сжатие динамического содержимого. Уровни варьируются от 0 (самый низкий уровень сжатия и наименьшее использование ЦП) до 10 (самый высокий уровень сжатия и максимальное использование ЦП). Служба WWW должна быть перезапущена, прежде чем все изменения этого атрибута вступили в силу.

Примечание. Так как динамическое сжатие потребляет значительные ресурсы ЦП и памяти, используйте его только на серверах с медленными сетевыми подключениями и временем ЦП, чтобы сэкономить. Сжатые статические ответы можно кэшировать и, следовательно, не влияют на ресурсы ЦП в качестве динамических ответов.

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

Указывает имя схемы сжатия. Например, Gzip или Deflate.
staticCompressionLevel Необязательный атрибут uint.

Указывает уровень сжатия схемы сжатия при сжатие статического содержимого. Уровни варьируются от 0 (самый низкий уровень сжатия и наименьшее использование ЦП) до 10 (самый высокий уровень сжатия и максимальное использование ЦП). 0 означает, что сжатие отключено. Служба WWW должна быть перезапущена, прежде чем все изменения этого атрибута вступили в силу.

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

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

Элемент Description
remove Необязательный элемент.

Удаляет ссылку на схему сжатия HTTP из коллекции схем сжатия HTTP.
clear Необязательный элемент.

Удаляет все ссылки на схемы сжатия HTTP из коллекции схем сжатия HTTP.

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

Следующий элемент по умолчанию <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>

Пример кода

В приведенных ниже примерах кода добавьте схему сжатия дефляции в IIS 7.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /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 httpCompressionCollection = httpCompressionSection.GetCollection();

         ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
         schemeElement["name"] = @"deflate";
         schemeElement["doStaticCompression"] = true;
         schemeElement["doDynamicCompression"] = true;
         schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
         httpCompressionCollection.Add(schemeElement);

         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 httpCompressionCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection

      Dim schemeElement As ConfigurationElement = httpCompressionCollection.CreateElement("scheme")
      schemeElement("name") = "deflate"
      schemeElement("doStaticCompression") = True
      schemeElement("doDynamicCompression") = True
      schemeElement("dll") = "%Windir%\system32\inetsrv\gzip.dll"
      httpCompressionCollection.Add(schemeElement)

      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 httpCompressionCollection = httpCompressionSection.Collection;

var schemeElement = httpCompressionCollection.CreateNewElement("scheme");
schemeElement.Properties.Item("name").Value = "deflate";
schemeElement.Properties.Item("doStaticCompression").Value = true;
schemeElement.Properties.Item("doDynamicCompression").Value = true;
schemeElement.Properties.Item("dll").Value = "%Windir%\\system32\\inetsrv\\gzip.dll";
httpCompressionCollection.AddElement(schemeElement);

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 httpCompressionCollection = httpCompressionSection.Collection

Set schemeElement = httpCompressionCollection.CreateNewElement("scheme")
schemeElement.Properties.Item("name").Value = "deflate"
schemeElement.Properties.Item("doStaticCompression").Value = True
schemeElement.Properties.Item("doDynamicCompression").Value = True
schemeElement.Properties.Item("dll").Value = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.AddElement(schemeElement)

adminManager.CommitChanges()