Esquema <scheme>
Visão geral
O elemento <scheme>
do elemento <httpCompression>
especifica as seguintes configurações para os esquemas de compactação GNU zip (Gzip) e Deflate nos Serviços de Informações da Internet (IIS) 7:
O nome name e dll respectivamente especificam o nome e a DLL do provedor de um esquema de compactação. O IIS 7 dá suporte à compactação Gzip e Deflate, e ambos os esquemas de compactação estão atualmente implementados em %windir%\system32\inetsrv\gzip.dll.
O atributo doStaticCompression especifica se a compactação estática está habilitada para o esquema de compactação especificado pelo atributo name. Definir doStaticCompression para true especifica que o conteúdo estático será compactado quando solicitado por um cliente. Se a compactação estática estiver habilitada, cada solicitação de conteúdo estático que contenha o cabeçalho “Accept-Encoding: gzip” ou “Accept-Encoding: deflate” faz com que o conteúdo seja compactado, desde que o esquema de compactação especificado no cabeçalho seja habilitado no IIS. Se a solicitação não contiver esse cabeçalho ou o cabeçalho especificar um esquema de compactação que não está habilitado no IIS, o conteúdo não será compactado.
Se o IIS determinar que a resposta deve ser compactada, o IIS verificará o diretório de compactação especificado pelo diretório atributo do elemento <httpCompression>. Se uma versão nova e compactada do arquivo estático for encontrada no diretório, ela será enviada para o navegador do cliente. Se uma versão nova e compactada do arquivo não for encontrada e a compactação sob demanda estiver habilitada com atributo dynamicCompressionBeforeCache do elemento <urlCompression>, o IIS enviará o arquivo solicitado de forma não compactada e adicionará esse arquivo à fila de compactação em segundo plano.
O atributo doDynamicCompression especifica se a compactação dinâmica está habilitada para o esquema de compactação especificado pelo atributo name. Definir doDynamicCompression para true especifica que o conteúdo dinâmico será compactado quando solicitado por um cliente. Se a compactação dinâmica estiver habilitada, cada solicitação de conteúdo dinâmico que contenha o cabeçalho “Accept-Encoding: gzip” ou “Accept-Encoding: deflate” faz com que o conteúdo seja compactado, desde que o esquema de compactação especificado no cabeçalho seja habilitado no IIS. Se a solicitação não contiver esse cabeçalho ou o cabeçalho especificar um esquema de compactação que não está habilitado no IIS, o conteúdo não será compactado.
Observação
Como o conteúdo dinâmico está sempre mudando por definição, o IIS não armazena em cache versões compactadas de conteúdo dinâmico. A compactação dinâmica consome um tempo de CPU considerável e recursos de memória e deve ser usada apenas em servidores com conexões de rede lentas e tempo de CPU de sobra.
Os atributos dynamicCompressionLevel e staticCompressionLevel especificam os níveis de compactação para os esquemas de compactação quando o IIS está, respectivamente, compactando conteúdo dinâmico ou estático. Níveis de compactação mais baixos produzem arquivos compactados ligeiramente maiores, mas com menor impacto geral sobre os recursos de CPU e memória. Níveis de compactação mais altos geralmente resultam em arquivos compactados menores, mas com maior uso de CPU e memória.
Observação
Por padrão, somente o esquema de compactação Gzip está disponível no IIS 7. Para habilitar o esquema de compactação Deflate programaticamente, consulte a seção Exemplos de código deste documento.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <scheme> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <scheme> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <scheme> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <scheme> não foi modificado no IIS 7.5. |
IIS 7.0 | O elemento <scheme> do elemento <httpCompression> foi introduzido no IIS 7.0. |
IIS 6,0 | O elemento <scheme> substitui as seguintes propriedades de metabase dos IIS 6.0:
|
Instalação
A compactação HTTP geralmente está disponível na instalação padrão do IIS 7 e posterior. No entanto, somente a compactação estática é instalada por padrão. Para instalar a compactação estática ou dinâmica, use as etapas a seguir.
Windows Server 2012 R2 ou Windows Server 2012
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
- Na página Funções de Servidor, expanda Servidor Web (IIS), expanda Servidor Web, expanda Desempenho e selecione Compactação de Conteúdo Estático e/ou Compactação de Conteúdo Dinâmico. Clique em Avançar.
- Na página Selecionar recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
- Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
- Expanda Serviços de Informações da Internet, expanda Serviços da World Wide Web, expanda Recursos de Desempenho e selecione Compactação de Conteúdo Dinâmico e/ou Compactação de Conteúdo Estático.
- Clique em OK.
- Clique em Fechar.
Windows Server 2008 R2 ou Windows Server 2008
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
- No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
- No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
- Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione Compactação de Conteúdo Dinâmico se quiser instalar a compactação dinâmica e Compactação de Conteúdo Estático se quiser instalar a compactação estática e clique em Avançar.
- Na página Confirmar Seleções de Instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows Vista ou Windows 7
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
- Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Recursos de Desempenho.
- Selecione Compactação Dinâmica Http, se desejar instalar a compactação dinâmica, e Compactação de Conteúdo Estático, se desejar instalar a compactação estática.
- Clique em OK.
Instruções
Não há nenhuma interface do usuário para definir o esquema de compactação para o IIS 7. Para obter exemplos de como definir o esquema de compactação programaticamente, veja a seção Exemplos de código desse documento.
Configuração
Atributos
Atributo | Descrição |
---|---|
dll |
Atributo de cadeia de caracteres obrigatório. Especifica o caminho do sistema de arquivos totalmente qualificado e o nome do arquivo da DLL de compactação associada ao esquema de compactação. O serviço WWW (Serviço de Publicação na World Wide Web) deve ser reiniciado antes que qualquer alteração nesse atributo entre em vigor. |
doDynamicCompression |
Atributo booliano opcional. Especifica se as respostas a solicitações de conteúdo dinâmico, como scripts nas extensões ASP (Páginas do Active Server) e ISAPI, são compactadas. Se esse valor for alterado no nível do esquema de compactação individual, o serviço WWW deverá ser reiniciado antes que a alteração entre em vigor. O valor padrão é true . |
doStaticCompression |
Atributo booliano opcional. Especifica se o IIS compacta respostas a solicitações de conteúdo estático. Como esse atributo não pode ser herdado, ele deve ser definido como verdadeiro no nível global (<httpCompression>) e no nível de esquema individual se o atributo name estiver definido como Gzip. Se esse valor for alterado no nível do esquema de compactação individual, o serviço WWW deverá ser reiniciado antes que a alteração entre em vigor. Observação: o armazenamento de compactação estática precisa estar localizado em uma partição de disco ou compartilhamento remoto formatado com NTFS. Se o armazenamento de arquivos não for NTFS, a compactação estática será desabilitada. Por motivos de segurança, nenhuma resposta compactada será servida de um armazenamento de cache FAT. O valor padrão é true . |
dynamicCompressionLevel |
Atributo uint opcional. Especifica o nível de compactação para o esquema de compactação quando o conteúdo dinâmico está sendo compactado. Os níveis variam de 0 (nível de compactação mais baixo e menor uso de CPU) a 10 (nível de compactação mais alto e maior uso de CPU). O serviço WWW deve ser reiniciado antes que as alterações nesse atributo entrem em vigor. Observação: como a compactação dinâmica consome recursos consideráveis de tempo e memória da CPU, use-o somente em servidores que têm conexões de rede lentas e tempo de CPU de sobra. As respostas estáticas compactadas podem ser armazenadas em cache e, portanto, não afetam os recursos da CPU como respostas dinâmicas. O valor padrão é 0 . |
name |
Atributo de cadeia de caracteres obrigatório. Especifica o nome do esquema de compactação. Por exemplo, Gzip ou Deflate. |
staticCompressionLevel |
Atributo uint opcional. Especifica o nível de compactação para o esquema de compactação quando o conteúdo estático está sendo compactado. Os níveis variam de 0 (nível de compactação mais baixo e menor uso de CPU) a 10 (nível de compactação mais alto e maior uso de CPU). 0 significa que a compactação está desabilitada. O serviço WWW deve ser reiniciado antes que as alterações nesse atributo entrem em vigor. O valor padrão é 7 . |
Elementos filho
Elemento | Descrição |
---|---|
remove |
Elemento opcional. Remove uma referência a um esquema de compactação HTTP da coleção de esquemas de compactação HTTP. |
clear |
Elemento opcional. Remove todas as referências aos esquemas de compactação HTTP da coleção de esquemas de compactação HTTP. |
Exemplo de configuração
O elemento padrão <httpCompression>
a seguir é configurado no arquivo ApplicationHost.config no IIS 7. Esta seção de configuração herda as definições de configuração padrão, a menos que você use o elemento <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>
Exemplo de código
Os exemplos de código a seguir adicionam o esquema de compactação Deflate ao 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
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma os conjuntos de configurações para a seção de local apropriado no arquivo 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()