Ativei a compactação de conteúdo dinâmico no IIS 7, mas o Fiddler está mostrando que minhas páginas dinâmicas ainda estão sendo veiculadas sem codificação de conteúdo: gzip.
A compactação de conteúdo estático está funcionando bem nos mesmos servidores.
Não tenho certeza se isso importa, mas a maioria das páginas dinâmicas são páginas coldfusion (Coldfusion está configurado como uma extensão ISAPI) e também estamos usando o módulo de reescrita de URL do IIS.
Isto é do meu applicationhost.config.
<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 doDynamicCompression="true" />
Aqui está um exemplo de solicitação:
GET / HTTP/1.1
Host: web5.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
e cabeçalho de resposta:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.0
...
Date: Mon, 22 Feb 2010 20:59:36 GMT
Responder1
Você pode seguir as etapas de solução de problemas mencionadas aqui.COMPRESSÃO HTTP no IIS 6 e IIS 7 usando conta de serviço
Responder2
"Content-Endcoding: chunked" nunca deve aparecer em uma resposta do servidor. "Chunked" é uma parte separada da especificação HTTP, "Transfer-Encoding". Você deve procurar por "Content-Encoding: gzip", potencialmente além de "Transfer-Encoding: chunked". Aqui está um exemplo da página inicial do Google:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Wed, 17 Feb 2010 13:43:22 GMT
Expires: Wed, 17 Feb 2010 13:43:22 GMT
Cache-Control: private, must-revalidate, max-age=0
Last-Modified: Wed, 17 Feb 2010 13:43:22 GMT
Server: igfe
Transfer-Encoding: chunked
Content-Encoding: gzip
Agora, no que diz respeito à depuração do seu problema, o IIS7 compacta com base no tipo de conteúdo. Então, quando vê "Content-Type: text/html", ele compacta a página. Então, primeiro, verifique se seus scripts estão retornando um tipo de conteúdo que o IIS considera compressível (texto/*).
Além disso, o IIS não compactará a página por padrão para uma solicitação HTTP/1.0 (usada por alguns proxies como o Squid) ou cabeçalhos que indiquem que a solicitação veio de um servidor proxy (Via: ou X-Forwarded-For:). Este é um padrão conservador para lidar com o grande número de proxies mais antigos que não lidam adequadamente com conteúdo HTTP compactado. Você pode substituir esse comportamento editando os arquivos de configuração do IIS (no servidor ou no nível do site).
Por fim, certifique-se de que seu cliente esteja enviando cabeçalhos "Accept-Encoding: gzip" na solicitação. Se for um navegador padrão, será por padrão, mas se você estiver usando o wget ou alguma outra ferramenta, talvez não. Você pode usarViolinistapara ver toda a conversa HTTP, incluindo cabeçalhos e dados.
Responder3
Fazendo algumas pesquisas descobriesseisso indica que a compactação também precisa ser habilitada no lado do Coldfusion quando ele gera o HTML a partir de um modelo. Não consigo encontrar a fonte exata, mas se bem me lembro, a compactação dinâmica é direcionada para ASP.Net e PHP, mas para este último ela ainda precisa ser habilitada na estrutura PHP também.
Portanto, presumo que o motivo pelo qual você não vê a compressão acontecendo é porque ela precisa ser habilitada no lado do gerador, neste caso o Coldfusion.
Responder4
USE O BLOCO DE NOTAS para editar applicationHost.config.Perdi várias horas antes de entender que minhas alterações feitas no notepad ++ (assim como no editor do Visual Studio 2010!!) não são aplicadas pelo IIS.
Uma maneira alternativa de adicionar mimeType adicional à coleção dynamicTypes/staticTypes é usar appcmd."C:\Windows\System32\Inetsrv\Appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/javascript',enabled='True']" /commit:apphost
E novamente: após essas alterações feitas - você as verá apenas no bloco de notas. O Notepad ++ (assim como o editor do Visual Studio 2010!!) mantém algum tipo de realidade/armazenamento alternativo para applicationHost.config. Ele mostra sua própria versão do arquivo (diferente daquela que você vê no bloco de notas) mesmo após o arquivo ser editado no bloco de notas e reaberto em np++/VS.