Compressão GZip No IIS 7.5 não está funcionando

5

Estou tentando oferecer suporte à compactação GZip para meus arquivos estáticos no IIS (que deve ser habilitado por padrão, mas não), mas não está funcionando até o momento. Aqui está a seção sob o nó <system.webServer> dentro do arquivo web.config do aplicativo web;

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
  <dynamicTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/json" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </dynamicTypes>
  <staticTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/atom+xml" enabled="true" />
    <add mimeType="application/xaml+xml" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </staticTypes>
</httpCompression>

<urlCompression doStaticCompression="true" />

Eu tentei com o Google Chrome. Aqui estão os cabeçalhos de solicitação;

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3

Accept-Encoding:gzip,deflate,sdch

Accept-Language:en-US,en;q=0.8

Cache-Control:no-cache

Connection:keep-alive

Host:my-website-url

Pragma:no-cache

User-Agent:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30

Estes são os cabeçalhos de resposta;

Accept-Ranges:bytes

Content-Length:232651

Content-Type:application/x-javascript

Date:Thu, 04 Aug 2011 08:58:19 GMT

ETag:"a69135734a50cc1:0"

Last-Modified:Mon, 01 Aug 2011 12:56:37 GMT

Server:Microsoft-IIS/7.5

X-Powered-By:ASP.NET

Eu verifiquei o arquivo applicationHost.config e encontrei alguns nós como abaixo;

----

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

----

<section name="urlCompression" overrideModeDefault="Allow" />

----

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
    <staticTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/x-javascript" enabled="true" />
        <add mimeType="application/atom+xml" enabled="true" />
        <add mimeType="application/xaml+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
    </staticTypes>
</httpCompression>

----

<urlCompression />

O que estou perdendo aqui?

    
por tugberk 05.08.2011 / 20:09

3 respostas

3

Parece que você pode não ter permissões definidas corretamente na pasta de compactação temporária. Você precisa garantir que o usuário que o seu IIS instala (ou aplicativo) está executando, assim como a permissão de gravação para a pasta de compactação.

Mais aqui

    
por 05.08.2011 / 20:41
0

Depois de muita pesquisa, finalmente encontrei o que a compactação estava fazendo no meu IIS 7.5. Para começar, o IIS não irá compactar um arquivo, a menos que seja carregado com freqüência suficiente. Isso levanta a questão "o que o IIS considera com frequência suficiente?" Bem, os padrões são 2 vezes a cada 10 segundos. Caramba!

Essa configuração pode ser alterada no web.config, mas a seção precisa ser desbloqueada primeiro no applicationHost.config. Aqui estão os comandos:

Primeiro desbloqueie a seção:

C:\Windows\System32\inetsrv\appcmd.exe unlock config /section:system.webServer/serverRuntime

Unlocked section "system.webServer/serverRuntime" at configuration path "MACHINE/WEBROOT/APPHOST".

Agora pronto, edite o arquivo web.config e adicione o elemento serverRuntime:

<?xml version="1.0" encoding="UTF-8"?> <configuration>
    <system.webServer>
        <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" />
        ...

Neste caso, configurei-o para acertar o arquivo uma vez em um período de 10 horas. Você pode ajustar os valores conforme necessário. Aqui está o documento que explica o elemento serverRuntime:

link

Espero que isso ajude a sua compactação a funcionar também.

Observação: você também pode definir o elemento serverRuntime no arquivo applicationHost.config, mas optei por alterá-lo no web.config porque temos vários servidores e farms com vários sites, e é mais fácil para mim controlá-lo a partir desse nível de granularidade.

    
por 26.03.2013 / 01:08
-1

Isso está funcionando para mim:

 <urlCompression doStaticCompression="true" doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression noCompressionForRange="false" noCompressionForHttp10="false" noCompressionForProxies="false">
  <dynamicTypes>
    <add mimeType="text/css" enabled="true" />
  </dynamicTypes>
  <staticTypes>
    <add mimeType="text/css" enabled="true" />
  </staticTypes>
 <staticTypes>
    <add mimeType="text/javascript" enabled="true" />
  </staticTypes>
</httpCompression>

Há também o tipo mime text / javascript e você só tem um aplicativo. Foi um problema até eu incluir o texto /...

    
por 08.08.2011 / 11:04