Схема схемы <>
Общие сведения
Элемент <scheme>
<httpCompression>
элемента задает следующие параметры для схем сжатия ZIP-файла GNU (Gzip) и Deflate в службах IIS 7:
Атрибуты name и DLL соответственно указывают имя и библиотеку DLL поставщика схемы сжатия. IIS 7 поддерживает сжатие Gzip и Deflate, и обе схемы сжатия в настоящее время реализованы в %windir%\system32\inetsrv\gzip.dll.
Атрибут doStaticCompression указывает, включено ли статическое сжатие для схемы сжатия, указанной атрибутом name . Если параметру doStaticCompression присвоено значение true , то статическое содержимое будет сжиматься по запросу клиента. Если статическое сжатие включено, каждый запрос статического содержимого, содержащего заголовок "Accept-Encoding: gzip" или "Accept-Encoding: deflate", вызывает сжатие содержимого при условии, что в службах IIS включена схема сжатия, указанная в заголовке. Если запрос не содержит этого заголовка или заголовок указывает схему сжатия, которая не включена в IIS, содержимое не сжимается.
Если служба IIS определяет, что ответ должен быть сжат, iis проверяет каталог сжатия, заданный <атрибутом каталога элемента httpCompression>. Если в каталоге обнаружена новая, сжатая версия статического файла, она отправляется в клиентский браузер. Если новая, сжатая версия файла не найдена, а сжатие по запросу включено с помощью атрибута dynamicCompressionBeforeCache элемента urlCompression>, iis отправляет запрошенный файл в несжатой форме и добавляет этот файл в очередь фонового сжатия.<
Атрибут doDynamicCompression указывает, включено ли динамическое сжатие для схемы сжатия, указанной атрибутом name . Если параметру 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:
|
Настройка
Сжатие HTTP обычно доступно при установке iis 7 и более поздних версий по умолчанию. Однако по умолчанию устанавливается только статическое сжатие. Чтобы установить статическое или динамическое сжатие, выполните следующие действия.
Windows Server 2012 или Windows Server 2012 R2
- На панели задач щелкните Диспетчер сервера.
- В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
- В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
- На странице Роли сервера разверните узел Веб-сервер (IIS),Веб-сервер, Затем — Производительность, а затем выберите Сжатие статического содержимого и (или) Динамическое сжатие содержимого. Щелкните Далее.
- На странице Выбор компонентов нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows 8 или Windows 8.1
- На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления.
- В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
- Разверните узел Службы IIS, Веб-службы, Функции производительности, а затем выберите Динамическое сжатие содержимого и (или) Сжатие статического содержимого.
- Нажмите кнопку ОК.
- Щелкните Закрыть.
Windows Server 2008 или Windows Server 2008 R2
- На панели задач нажмите кнопку Пуск, выберите Администрирование, а затем диспетчер сервера.
- В области иерархии диспетчер сервера разверните узел Роли и выберите Веб-сервер (IIS).
- На панели Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
- На странице Выбор служб ролеймастера добавления служб ролей выберите Динамическоесжатие содержимого , если требуется установить динамическое сжатие, и Сжатие статического содержимого , если требуется установить статическое сжатие, а затем нажмите кнопку Далее.
- На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
- На странице Результаты нажмите кнопку Закрыть.
Windows Vista или Windows 7
- На панели задач нажмите кнопку Пуск, а затем панель управления.
- В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
- Разверните узел Службы IIS, затем Службы Интернета, а затем Функции производительности.
- Выберите Http Compression Dynamic (Динамическое сжатие HTTP), если требуется установить динамическое сжатие, и Сжатие статического содержимого , если требуется установить статическое сжатие.
- Нажмите кнопку ОК.
Инструкции
Отсутствует пользовательский интерфейс для настройки схемы сжатия для IIS 7. Примеры установки схемы сжатия программными средствами см. в разделе Примеры кода этого документа.
Конфигурация
Атрибуты
Атрибут | Описание |
---|---|
dll |
Обязательный строковый атрибут. Указывает полный путь к файловой системе и имя файла библиотеки DLL сжатия, связанной со схемой сжатия. Служба веб-публикации (служба WWW) должна быть перезапущена, прежде чем изменения этого атрибута вступают в силу. |
doDynamicCompression |
Дополнительный логический атрибут. Указывает, сжимаются ли ответы на запросы динамического содержимого, например скрипты в расширениях ACTIVE Server Pages (ASP) и ISAPI. Если это значение изменяется на уровне отдельной схемы сжатия, служба WWW должна быть перезапущена до того, как изменение вступит в силу. Значение по умолчанию — true . |
doStaticCompression |
Дополнительный логический атрибут. Указывает, сжимает ли СЛУЖБЫ IIS ответы на запросы статического содержимого. Поскольку этот атрибут не может быть унаследован, ему должно быть присвоено значение true как на глобальном уровне (<httpCompression>), так и на уровне отдельной схемы, если атрибуту name присвоено значение Gzip. Если это значение изменяется на уровне отдельной схемы сжатия, служба WWW должна быть перезапущена до того, как изменение вступит в силу. Примечание: Хранилище статического сжатия должно находиться в разделе диска или удаленном общем ресурсе, отформатированного с помощью NTFS. Если хранилище файлов не является NTFS, статическое сжатие отключено. По соображениям безопасности сжатые ответы не будут обслуживаться из хранилища кэша FAT. Значение по умолчанию — true . |
dynamicCompressionLevel |
Необязательный атрибут uint. Задает уровень сжатия для схемы сжатия при сжатии динамического содержимого. Уровни варьируются от 0 (самый низкий уровень сжатия и самая низкая загрузка ЦП) до 10 (самый высокий уровень сжатия и максимальная загрузка ЦП). Служба WWW должна быть перезапущена, прежде чем изменения этого атрибута вступают в силу. Примечание: Так как динамическое сжатие потребляет значительное время ЦП и ресурсы памяти, используйте его только на серверах с медленными сетевыми подключениями и временем ЦП. Сжатые статические ответы можно кэшировать и, следовательно, не влиять на ресурсы ЦП, как динамические ответы. Значение по умолчанию — 0 . |
name |
Обязательный строковый атрибут. Указывает имя схемы сжатия. Например, Gzip или Deflate. |
staticCompressionLevel |
Необязательный атрибут uint. Задает уровень сжатия для схемы сжатия при сжатии статического содержимого. Уровни варьируются от 0 (самый низкий уровень сжатия и самая низкая загрузка ЦП) до 10 (самый высокий уровень сжатия и максимальная загрузка ЦП). 0 означает, что сжатие отключено. Служба WWW должна быть перезапущена, прежде чем изменения этого атрибута вступают в силу. Значение по умолчанию — 7 . |
Дочерние элементы
Элемент | Описание |
---|---|
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>
Пример кода
В следующих примерах кода схема сжатия deflate добавляется в 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()
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по