como ativar a compactação de conteúdo dinâmico iis 7?

5

Eu 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 é importante, mas a maioria das páginas dinâmicas são páginas de coldfusion (o Coldfusion é configurado como uma extensão ISAPI) e também estamos usando o módulo de reconfiguração de URL do IIS.

Isso é 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á uma solicitação de amostra:

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
    
por davidcl 20.01.2010 / 18:05

4 respostas

1

Você pode seguir as etapas de solução de problemas mencionadas aqui. COMPRESSÃO HTTP no IIS 6 e IIS 7 usando a conta de serviço

    
por 23.01.2010 / 04:59
1

"Content-Endcoding: chunked" nunca deve aparecer em uma resposta do servidor. "Chunked" é uma parte separada da especificação HTTP inteiramente, "Transfer-Encoding". Você deve estar procurando 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 problema, o IIS7 é compactado com base no tipo de conteúdo. Então, quando ele vê "Content-Type: text / html", ele comprime a página. Portanto, primeiro, verifique se os scripts estão retornando um tipo de conteúdo que o IIS considera como compressível (text /*).

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 indicam 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 manipulam conteúdo HTTP compactado corretamente. Você pode substituir esse comportamento editando os arquivos de configuração do IIS (no nível do servidor ou do site).

Por fim, verifique se seu cliente está 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, isso não ocorrerá. Você pode usar o Fiddler para ver toda a conversa HTTP, incluindo cabeçalhos e dados.

    
por 17.02.2010 / 14:58
0

Fazendo algumas pesquisas, descobri que isso indica que a compactação também precisa ser ativada no lado do Coldfusion quando gera o HTML de um modelo. Não consigo encontrar a fonte exata, mas se bem me lembro corretamente, a compactação dinâmica é direcionada para ASP.Net e PHP, mas, para a segunda, ela ainda precisa ser ativada na estrutura PHP também.

Portanto, estou assumindo que a razão pela qual você não vê a compactação acontecendo é porque ela precisa ser ativada no lado do gerador, no caso o ColdFusion.

    
por 23.02.2010 / 09:14
0

USE o NOTEPAD para editar o applicationHost.config. Eu desperdicei 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 por IIS.

A maneira alternativa de adicionar mimeType adicional à coleção dynamicTypes / staticTypes é usar o 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. Mostra-lhe a sua própria versão do ficheiro (diferente da que vê no bloco de notas), mesmo após o ficheiro ter sido editado no bloco de notas e reaberto em np ++ / VS.

    
por 30.09.2011 / 11:58