Compactação HTTP <httpCompression>

Visão geral

O elemento <httpCompression> especifica as configurações de compactação HTTP dos Serviços de Informações da Internet (IIS) 7. A compactação HTTP pode fornecer tempos de transmissão mais rápidos entre os IIS e os navegadores cliente que podem aceitar arquivos compactados.

Observação

Um cliente HTTP deve iniciar a comunicação para conteúdo compactado enviando o cabeçalho de codificação HTTP apropriado. Se um cliente não for capaz de compactar HTTP, ele não passará esse cabeçalho e os IIS 7 sempre retornarão conteúdo descompactado.

Há dois tipos diferentes de compactação que os IIS 7 usam:

  • Compactação estática:

    Os IIS 7 armazenam em cache conteúdo estático compactado no caminho especificado pelo atributo de diretório, o que aumenta o desempenho da compactação eliminando a necessidade de recompactar o conteúdo que já foi compactado. Depois que os IIS 7 compactam um arquivo, as solicitações subsequentes receberão a cópia compactada do arquivo do diretório de cache.

    Os atributos staticCompressionEnableCpuUsage e staticCompressionDisableCpuUsage especificam quando os IIS 7 compactam arquivos estáticos com base no uso da CPU.

    Você deve usar a compactação estática com arquivos que normalmente não são alterados, como arquivos HTML (*.html, *.htm), arquivos de texto (*.txt), documentos do Microsoft Office (*.doc, *.xls, *.ppt), etc. O tamanho desses arquivos pode ser reduzido por meio da compactação, o que reduz os tempos de download para solicitações de cliente e reduz a largura de banda no servidor.

    Observação

    Arquivos de imagem como arquivos *.jpg e *.png também são arquivos estáticos, mas normalmente eles não se beneficiam da compactação HTTP porque esses arquivos de imagem já estão compactados.

  • Compactação dinâmica:

    Ao contrário da compactação estática, os IIS 7 executam compactação dinâmica sempre que um cliente solicita o conteúdo, mas a versão compactada não é armazenada em cache no disco. Essa alteração é feita devido à principal diferença entre o conteúdo estático e o dinâmico. O conteúdo estático não é alterado. No entanto, o conteúdo dinâmico normalmente é conteúdo criado por um aplicativo e, portanto, é alterado com frequência, como conteúdo ASP (Active Server Pages) ou ASP.NET. Como o conteúdo dinâmico deve ser alterado com frequência, os IIS 7 não o armazena em cache.

    Os atributos dynamicCompressionEnableCpuUsage e dynamicCompressionDisableCpuUsage especificam quando os IIS 7 compactam arquivos dinâmicos com base no uso da CPU.

Os IIS 7 dão suporte a dois esquemas de compactação padrão do setor diferentes:

Cada um desses dois esquemas de compactação pode ser habilitado usando o elemento <schemes> do elemento <httpCompression>.

Observação

Embora o elemento <httpCompression> especifique as configurações de compactação HTTP para os Serviços de Informações da Internet (IIS) 7, o elemento <urlCompression> especifica se a compactação está habilitada para um namespace de URL.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <httpCompression> não foi modificado nos IIS 10.0.
IIS 8.5 O atributo staticCompressionIgnoreHitFrequency foi adicionado aos IIS 8.5.
IIS 8.0 O elemento <httpCompression> não foi modificado nos IIS 8.0.
IIS 7.5 Nos IIS 7.5, o valor padrão do atributo minFileSizeForComp foi alterado e o atributo dynamicCompressionBufferLimit foi adicionado.
IIS 7.0 O elemento <httpCompression> foi introduzido no IIS 7.0.
IIS 6,0 O elemento <httpCompression> substitui as seguintes propriedades de metabase dos IIS 6.0:
  • HcCacheControlHeader
  • HcCompressionDirectory
  • HcDoDiskSpaceLimiting
  • HcExpiresHeader
  • HcMaxDiskSpaceUsage
  • HcMinFileSizeForComp
  • HcNoCompressionForHttp10
  • HcNoCompressionForProxies
  • HcNoCompressionForRange
  • HcSendCacheHeaders

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

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. 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.
  4. 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.
    Captura de tela do servidor Web e do nó Desempenho com a Compactação de conteúdo estático selecionada e a Compactação de conteúdo dinâmico realçada. .
  5. Na página Selecionar recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  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.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
  3. 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.
    Captura de tela do painel World Wide Web e Recursos de Desempenho expandido mostrando Compactação de Conteúdo Dinâmico e Compactação de Conteúdo Estático selecionadas.
  4. Clique em OK.
  5. Clique em Fechar.

Windows Server 2008 R2 ou Windows Server 2008

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
  4. 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.
    Captura de tela do nó Desempenho expandida na página Adicionar Serviços de Função com a Compactação de Conteúdo Dinâmico realçada.
  5. Na página Confirmar Seleções de Instalação, clique em Instalar.
  6. Na página Resultados , clique em Fechar.

Windows Vista ou Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
  3. Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Recursos de Desempenho.
  4. 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.
    Captura de tela do nó Recursos de desempenho expandido e H T T P Compactação dinâmica selecionada.
  5. Clique em OK.

Instruções

Como habilitar ou desabilitar a compactação estática e dinâmica para um site ou aplicativo

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador do IIS (Serviços de Informações da Internet).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, selecione Iniciar e selecione Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, vá para a conexão, site, aplicativo ou diretório para o qual você deseja habilitar a compactação.

  3. No painel Página Inicial, clique duas vezes em Compactação.
    Captura de tela da página inicial do site padrão mostrando a compactação selecionada.

  4. No painel Compactação, marque as caixas para habilitar a compactação estática ou dinâmica ou remova as marcas de seleção para desabilitar a compactação estática ou dinâmica.
    A captura de tela mostra o painel Compactação com as caixas Habilitar compactação de conteúdo dinâmico e Habilitar compactação de conteúdo estático selecionadas.

  5. Depois de concluir as etapas acima, clique em Aplicar no painel Ações.

Como habilitar ou desabilitar a compactação estática e dinâmica para um servidor

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador do IIS (Serviços de Informações da Internet).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, selecione Iniciar e selecione Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, realce o nome do servidor.

  3. No painel Página Inicial do servidor, clique duas vezes em Compactação.
    A captura de tela mostra o painel inicial dos servidores com a Compactação realçada.

  4. No painel Compactação, marque as caixas para habilitar a compactação estática ou dinâmica ou remova as marcas de seleção para desabilitar a compactação estática ou dinâmica.
    Captura de tela da página Compactação mostrando as duas caixas para Habilitar compactação de conteúdo dinâmico e Habilitar compactação de conteúdo estático selecionadas.

  5. Depois de concluir as etapas acima, clique em Aplicar no painel Ações.

Como configurar staticCompressionIgnoreHitFrequency

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Se você estiver usando o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, selecione o servidor e clique duas vezes em Editor de Configuração.

  3. No Editor de Configuração, para a seção, selecione system.webServer e, em seguida, selecione httpCompression.

  4. Para staticCompressionIgnoreHitFrequency, insira True para desabilitar o comportamento de que um arquivo estático é compactado somente se ele for acessado um determinado número de vezes em um período de tempo ou insira False para habilitar o comportamento.
    A captura de tela mostra a página do Editor de Configuração com True inserido para a opção estática Compression Ignore Hit Frequency.

  5. No painel Ações, clique em Aplicar.

Configuração

Atributos

Atributo Descrição
cacheControlHeader Atributo de cadeia de caracteres opcional.

Especifica a diretiva que os IIS adicionam ao cabeçalho Cache-Control que substitui o cabeçalho HTTP Expires. Esse atributo garante que clientes mais antigos e servidores proxy não tentem armazenar arquivos compactados em cache. Para habilitar essa configuração, você deve definir o atributo sendCacheHeaders como true. O serviço WWW deve ser reiniciado antes que as alterações nessa propriedade entrem em vigor.

O valor padrão é max-age=86400.
directory Atributo de cadeia de caracteres opcional.

Especifica o diretório em que as versões compactadas dos arquivos estáticos são temporariamente armazenadas e armazenadas em cache.

Observação: nos IIS 6.0, o caminho de diretório padrão para arquivos compactados temporários dos IIS era %windir%\IIS Temporary Compressed Files.

O valor padrão é %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files.
doDiskSpaceLimiting Atributo booliano opcional.

Especifica se existe um limite para a quantidade de espaço em disco que todos os arquivos compactados, armazenados no diretório de compactação especificado pelo atributo de diretório, podem ocupar.

O valor padrão é true.
dynamicCompressionBufferLimit Atributo uint opcional.

Especifica a quantidade máxima de dados compactados dinamicamente que os IIS armazenarão em buffer antes de liberar o buffer para um cliente. Isso diminui a quantidade de memória necessária para executar a compactação dinâmica.

Observação: esse atributo foi adicionado aos IIS 7.5.

O valor padrão é 65536.
dynamicCompressionDisableCpuUsage Atributo uint opcional.

Especifica o percentual de utilização da CPU na qual a compactação dinâmica será desabilitada.

Observação: esse atributo atua como um limite superior da CPU no qual a compactação dinâmica é desativada. Quando a utilização da CPU ficar abaixo do valor especificado no atributo dynamicCompressionEnableCpuUsage, a compactação dinâmica será reabilitada.

O valor padrão é 90.
dynamicCompressionEnableCpuUsage Atributo uint opcional.

Especifica o percentual de utilização da CPU abaixo da qual a compactação dinâmica será habilitada. O valor precisa estar entre 0 e 100. A utilização média da CPU é calculada a cada 30 segundos.

Observação: esse atributo atua como um limite de CPU inferior abaixo do qual a compactação dinâmica é ativada. Quando a utilização da CPU ficar acima do valor especificado no atributo dynamicCompressionDisableCpuUsage, a compactação dinâmica será desabilitada.

O valor padrão é 50.
expiresHeader Atributo de cadeia de caracteres opcional.

Especifica o conteúdo do cabeçalho HTTP Expires que é enviado com todos os arquivos compactados solicitados, juntamente com o cabeçalho Cache-Control especificado no atributo cacheControlHeader. Essa combinação de cabeçalhos garante que clientes mais antigos e servidores proxy não tentem armazenar arquivos compactados em cache. Para habilitar essa configuração, você deve definir o atributo sendCacheHeaders como true. O serviço WWW (Serviço de Publicação na World Wide Web) deve ser reiniciado antes que as alterações nessa propriedade entrem em vigor.

O valor padrão é Wed, 01 Jan 1997 12:00:00 GMT.
maxDiskSpaceUsage Atributo uint opcional.

Especifica o número de bytes de espaço em disco que os arquivos compactados podem ocupar no diretório de compactação. Quando o espaço usado por arquivos compactados excede 90% do valor nesse atributo, os IIS excluem os arquivos menos usados recentemente até que um nível de uso de 90% seja atingido.

Observação: nos IIS 6.0, esse limite foi expresso em bytes; nos IIS 7, ele é expresso em megabytes. Nos IIS 7, o limite é aplicado por pool de aplicativos.

O valor padrão é 100.
minFileSizeForComp Atributo uint opcional.

Especifica o número mínimo de quilobytes que um arquivo deve conter para usar a compactação sob demanda.

O valor padrão dos IIS 7.5 é 2700; para os IIS 7.0, o valor padrão era 256.
noCompressionForHttp10 Atributo booliano opcional.

Especifica se a compactação está desabilitada para solicitações que contêm um número de versão HTTP 1.0.

Observação: alguns clientes HTTP 1.0 não manipulam o cache de objetos compactados corretamente. Você pode usar essa configuração para evitar o retorno de um arquivo compactado para um cliente que não pode descompactá-lo.

O valor padrão é true.
noCompressionForProxies Atributo booliano opcional.

Especifica se a resposta HTTP 1.1 está desabilitada para solicitações de compactação que vêm por meio de servidores proxy.

Observação: alguns servidores proxy HTTP não manipulam o cache de objetos compactados corretamente. Você pode usar essa configuração para evitar o retorno de um arquivo compactado para um servidor proxy que não pode descompactá-lo.

O valor padrão é true.
noCompressionForRange Atributo booliano opcional.

Especifica se a compactação está desabilitada para solicitações HTTP que incluem o cabeçalho Range.

Observação: alguns clientes não podem lidar com solicitações de intervalo corretamente. Você pode usar essa configuração para evitar o retorno de um arquivo compactado para um cliente que não pode descompactá-lo.

O valor padrão é true.
sendCacheHeaders Atributo booliano opcional.

Especifica se os cabeçalhos configurados em cacheControlHeader e expiresHeader são enviados com cada resposta compactada.

O valor padrão é false.
staticCompressionDisableCpuUsage Atributo uint opcional.

Especifica o percentual de utilização da CPU na qual a compactação estática está desabilitada. O valor precisa estar entre 0 e 100. A utilização média da CPU é calculada a cada 30 segundos.

Observação: essa propriedade atua como um limite superior da CPU no qual a compactação estática é desativada. Quando a utilização da CPU ficar abaixo do valor especificado no atributo staticCompressionEnableCpuUsage, a compactação estática será reabilitada.

O valor padrão é 100.
staticCompressionEnableCpuUsage Atributo uint opcional.

Especifica o percentual de utilização da CPU na qual a compactação estática é habilitada. O valor precisa estar entre 0 e 100. A utilização média da CPU é calculada a cada 30 segundos.

Observação: essa propriedade atua como um limite de CPU inferior abaixo do qual a compactação estática é ativada. Quando a utilização da CPU ficar acima do valor especificado no atributo staticCompressionDisableCpuUsage, a compactação estática será desabilitada.

O valor padrão é 50.
staticCompressionIgnoreHitFrequency Atributo booliano opcional.

Se True, desabilita o comportamento de que um arquivo estático é compactado somente se ele for acessado um determinado número de vezes em um período de tempo. Você pode encontrar circunstâncias em que deseja que o conteúdo estático seja sempre compactado para reduzir o uso de largura de banda. Por exemplo, talvez você queira sempre compactar conteúdo estático quando um sistema emprega um balanceador de carga com cache de borda entre um servidor Web e o solicitante, fazendo com que um arquivo descompactado seja armazenado em cache no servidor de borda porque as solicitações subsequentes não alcançariam o servidor Web.

Se o comportamento não estiver desabilitado, uma taxa de ocorrência maior ou igual a dois acertos em 10 segundos resultará na compactação do conteúdo estático. Uma taxa de ocorrência menor resultaria na não compactação do conteúdo.

O valor padrão é False.

Elementos filho

Elemento Descrição
scheme Elemento opcional.

Especifica o esquema de compactação (Gzip ou Deflate) que os IIS usam para compactar solicitações de cliente.
dynamicTypes Elemento opcional.

Especifica as configurações para compactação dinâmica.
staticTypes Elemento opcional.

Especifica as configurações para compactação estática.

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 adicionarão os tipos MIME para documentos do Office 2003 à lista de tipos de compactação dinâmica.

Observação

Os documentos do Office 2007 usam compactação interna, portanto, não precisam ser compactados pelos 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

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 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()

Os exemplos de código a seguir adicionarão os tipos MIME para documentos do Office 2003 à lista de tipos de compactação estática.

(> [!OBSERVAÇÃO]

Os documentos do Office 2007 usam compactação interna. Portanto, não precisam ser compactados pelo 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

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 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()