Respostas:
Você pode ativar a compactação GZIP inteiramente no seu Web.config
arquivo. Isso é particularmente útil se você estiver em hospedagem compartilhada e não puder configurar o IIS diretamente, ou desejar que sua configuração seja carregada entre todos os ambientes que você segmentar.
<system.webServer>
<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>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
Para testar se a compactação está funcionando ou não, use as ferramentas do desenvolvedor no Chrome ou Firebug for Firefox e verifique se o cabeçalho de resposta HTTP está definido:
Content-Encoding: gzip
Observe que esse cabeçalho não estará presente se o código de resposta for 304 (não modificado). Se for esse o caso, faça uma atualização completa (mantenha pressionada a tecla Shift ou controle enquanto pressiona o botão Atualizar) e verifique novamente.
.js
não. Além disso, tentei adicionar application/x-javascript
. Usando junto com o tomcat, removemos o directory
parâmetro.
Você precisará ativar o recurso no painel de controle Recursos do Windows:
Gzip global no HttpModule
Se você não tiver acesso à instância final do IIS (hospedagem compartilhada ...), poderá criar um HttpModule que adiciona esse código a todos os eventos HttpApplication.Begin_Request:
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
Teste
Kudos, nenhuma solução é feita sem teste. Eu gosto de usar o plug-in do Firefox " Liveheaders ", que mostra todas as informações sobre todas as mensagens http entre o navegador e o servidor, incluindo compactação, tamanho do arquivo (que você pode comparar com o tamanho do servidor).
Eu só precisava adicionar o recurso nos recursos do Windows, como Charlie mencionou. Para as pessoas que não conseguem encontrá-lo na janela 10 ou no servidor 2012 ou superior, localize-o como abaixo. Eu lutei um pouco
Se você também está tentando compactar páginas dinâmicas (como aspx) e não está funcionando, provavelmente é porque a opção não está ativada (você precisa instalar o módulo de compactação dinâmica de conteúdo usando os recursos do Windows):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
Outra maneira fácil de testar sem instalar nada, nem é dependente da versão do IIS. Cole seu URL neste link - SEO Checkup
Para adicionar ao web.config: http://www.iis.net/configreference/system.webserver/httpcompression
Experimente o Firefox com os complementos do Firebug instalados. Estou usando isso; ótima ferramenta para desenvolvedor web.
Ativei a compactação Gzip também no meu IIS7 usando o web.config.