HTTP Compression <httpCompression>

Visão geral

O <httpCompression> elemento 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 o IIS e 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 aceito apropriado. Se um cliente não for capaz de compactar HTTP, ele não passará esse cabeçalho e o IIS 7 sempre retornará conteúdo descompactado.

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

  • Compactação estática:

    O IIS 7 armazena em cache o 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 o IIS 7 compactar 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 o IIS 7 compacta arquivos estáticos com base no uso da CPU.

    Você deve usar 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 *.jpg e *arquivos de .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, o IIS 7 executa 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 conteúdo estático e dinâmico. O conteúdo estático não é alterado. No entanto, o conteúdo dinâmico normalmente é um conteúdo criado por um aplicativo e, portanto, é alterado com frequência, como ASP (Active Server Pages) ou conteúdo de ASP.NET. Como o conteúdo dinâmico deve mudar com frequência, o IIS 7 não o armazena em cache.

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

O IIS 7 dá 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 <schemes> elemento do <httpCompression> elemento .

Observação

Embora o <httpCompression> elemento 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 <httpCompression> elemento não foi modificado no IIS 10.0.
IIS 8.5 O staticCompressionIgnoreHitFrequency atributo foi adicionado no IIS 8.5.
IIS 8.0 O <httpCompression> elemento não foi modificado no IIS 8.0.
IIS 7.5 No IIS 7.5, o valor padrão do minFileSizeForComp atributo foi alterado e o dynamicCompressionBufferLimit atributo foi adicionado.
IIS 7.0 O <httpCompression> elemento foi introduzido no IIS 7.0.
IIS 6,0 O <httpCompression> elemento substitui as seguintes propriedades de metabase do 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, apenas 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. Em 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, em seguida, selecione Compactação de Conteúdo Estático e/ou Compactação de Conteúdo Dinâmico. Clique em Próximo.
    Captura de tela do servidor Web e do nó desempenho com compactação de conteúdo estático selecionada e 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, em seguida, clique em Ativar ou desativar recursos do Windows.
  3. Expanda Serviços de Informações da Internet, expanda World Wide Web Services, expanda Recursos de Desempenho e, em seguida, 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 and Performance Features expandido mostrando a Compactação de Conteúdo Dinâmico e a Compactação de Conteúdo Estático selecionada.
  4. Clique em OK.
  5. Clique em fechar

Windows Server 2008 R2 ou Windows Server 2008

  1. Na barra de tarefas, clique em Iniciar, aponte para Ferramentas Administrativas e clique em Gerenciador do Servidor.
  2. No painel hierarquia 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údoDinâmico se você quiser instalar 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 expandido na página Adicionar Serviços de Função com 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, em seguida, clique em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e, em seguida, clique em Ativar ou desativar Recursos do Windows.
  3. Expanda Serviços de Informações da Internet e, em seguida, World Wide Web Services e Recursos de Desempenho.
  4. Selecione Http Compression Dynamic se você quiser instalar a compactação dinâmica e a Compactação de Conteúdo Estático se quiser instalar a compactação estática.
    Captura de tela do nó Recursos de Desempenho expandido e H T TP Compression Dynamic selecionado.
  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):

    • Se você estiver 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 de Serviços de Informações da Internet (IIS).
    • 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 dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Server 2008 ou o Windows Server 2008 R2:

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

      • Na barra de tarefas, clique em Iniciar e, em seguida, clique em 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 , acesse a conexão, o site, o aplicativo ou o 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 Compactação selecionada.

  4. No painel Compactação, marcar as caixas para habilitar a compactação estática ou dinâmica ou remover as marcas de marcar para desabilitar a compactação estática ou dinâmica.
    Captura de tela que mostra o painel Compactação com Habilitar compactação dinâmica de conteúdo e Habilitar caixas de 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):

    • Se você estiver 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 de Serviços de Informações da Internet (IIS).
    • 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 dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Server 2008 ou o Windows Server 2008 R2:

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

      • Na barra de tarefas, clique em Iniciar e, em seguida, clique em 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.
    Captura de tela que mostra o painel Página Inicial dos servidores com Compactação realçada.

  4. No painel Compactação, marcar as caixas para habilitar a compactação estática ou dinâmica ou remover as marcas de marcar 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 dinâmica de conteúdo e Habilitar compactação de conteúdo estático selecionada.

  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 de Serviços de Informações da Internet (IIS).
    • Se você estiver usando 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, httpCompression.

  4. Para staticCompressionIgnoreHitFrequency, insira True para desabilitar o comportamento de que um arquivo estático é compactado somente se for atingido um determinado número de vezes em um período de tempo ou insira False para habilitar o comportamento.
    Captura de tela que mostra a página editor de configuração com True inserido para a opção Compactação estática Ignorar Frequência de Ocorrência.

  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 o IIS adiciona ao cabeçalho Cache-Control que substitui o cabeçalho HTTP Expira. Esse atributo garante que clientes e servidores proxy mais antigos 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 de arquivos estáticos são armazenadas temporariamente e armazenadas em cache.

Nota: No IIS 6.0, o caminho de diretório padrão para arquivos compactados temporários do IIS era %windir%\Arquivos Compactados Temporários do IIS.

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, que são 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 o IIS armazenará 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.

Nota: Esse atributo foi adicionado ao 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.

Nota: Esse atributo atua como um limite de CPU superior 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á habilitada novamente.

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 deve estar entre 0 e 100. A utilização média da CPU é calculada a cada 30 segundos.

Nota: Esse atributo atua como um limite de CPU inferior abaixo do qual a compactação dinâmica está ativada. Quando a utilização da CPU aumentar 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 Expira 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 (World Wide Web Publishing Service) 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 megabytes 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, o IIS exclui os arquivos menos usados recentemente até que um nível de uso de 90% seja atingido.

Nota: No IIS 6.0, esse limite foi expresso em bytes; no IIS 7, ele é expresso em megabytes. No 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 do IIS 7.5 é 2700; para o 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.

Nota: Alguns clientes HTTP 1.0 não lidam com 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.

Nota: Alguns servidores proxy HTTP não lidam com 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.

Nota: 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 deve estar entre 0 e 100. A utilização média da CPU é calculada a cada 30 segundos.

Nota: Essa propriedade atua como um limite superior de 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 está habilitada. O valor deve estar entre 0 e 100. A utilização média da CPU é calculada a cada 30 segundos.

Nota: Essa propriedade atua como um limite de CPU inferior abaixo do qual a compactação estática está ativada. Quando a utilização da CPU subir 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 for atingido 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 sempre seja compactado para reduzir o uso da largura de banda. Por exemplo, talvez você queira sempre compactar o 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 chegariam ao servidor Web.

Se o comportamento não estiver desabilitado, uma taxa de ocorrências maior ou igual a duas ocorrências 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 o IIS usa para compactar solicitações de cliente.
dynamicTypes Elemento opcional.

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

Especifica as definições de configuração 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 <clear> elemento .

<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 pelo 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

Você deve ter certeza de definir o parâmetro commit como apphost ao usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de localização apropriada 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

Você deve ter certeza de definir o parâmetro commit como apphost ao usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de localização apropriada 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()