Precisa de ajuda com algumas configurações de compactação web.config do IIS7

9

Estou tentando definir minhas configurações de compactação do IIS7 em meu arquivo web.config. Estou tentando ativar as solicitações HTTP 1.0 para serem gzip.

O MSDN tem todas as informações sobre isso aqui .

É possível ter essa informação de configuração no arquivo web.config do meu próprio site? Ou eu preciso configurá-lo em um nível de aplicativo? Atualmente, eu tenho esse código no meu web.config ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

Não está funcionando :( Solicitações de HTTP 1.1 estão sendo compactadas, apenas não 1.0.

Essa página do MSDN acima diz que ela pode ser usada em: -

  • Machine.config
  • ApplicationHost.config
  • Aplicativo Raiz Web.config
  • Aplicativo Web.config
  • Diretório Web.config

Então, podemos definir essas configurações por site, programaticamente em um arquivo web.config? (este é um arquivo Web.config do aplicativo ...) O que eu fiz de errado?

aplausos:)

EDIT: me perguntaram como eu sei HTTP1.0 não está sendo compactado. Estou usando as regras de rastreamento de solicitação com falha, que informa: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
    
por Pure.Krome 11.06.2009 / 02:53

3 respostas

2

Após uma boa pesquisa, ele é 'bloqueado' por padrão no nível do aplicativo. Como tal, precisa ser 'desbloqueado'. isso pode ser feito através da linha de comando ou através das ferramentas de administração iis7 (download extra).

por exemplo. appcmd set config -section:urlCompression /doDynamicCompression:true

Refrências:

por 01.10.2009 / 03:07
3

Preste muita atenção ao fato de que a configuração web.config do IIS 7.x

noCompressionForProxies="false"

Não é respeitado no nível web.config. Ele deve ser definido em C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config da seguinte forma:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Certifique-se de realizar uma redefinição do IIS após alterar a configuração.

Uma solicitação é determinada como proveniente de um proxy pelo IIS, se a solicitação da web do cliente tiver o cabeçalho HTTP "Via" assim:

Via: 1.1 foo
    
por 13.10.2011 / 01:11
1

Como você está testando que as solicitações HTTP1.0 não estão sendo compactadas? Será que o cliente que você está usando não está dizendo ao servidor que ele pode aceitar uma resposta compactada?

Se você puder ver os cabeçalhos enviados pelo cliente (apresentados pelo próprio cliente de teste, usando o Firebug ou similar se você estiver testando no Firefox ou IEHTTPHeaders se estiver testando no IE ou farejando o tráfego usando uma ferramenta externa) , você deve ver algo como

Accept-Encoding: compress, gzip, deflate

lá em algum lugar. Se o cliente não informar ao servidor que ele pode aceitar uma resposta compactada, o servidor não enviará um, independentemente das outras configurações que você tenha do lado do servidor.

Outro problema pode ser se você estiver testando por meio de um servidor proxy que se identifique como tal. Nesse caso, a configuração noCompressionForProxies pode estar tomando precedência e bloqueando a possibilidade de uma resposta compactada.

Uma coisa a notar é que alguns clientes e proxys que enviam solicitações HTTP1.0 (geralmente softwares mais antigos) não manipularão corretamente uma resposta compactada se receberem uma, portanto, se você ativar a compactação para respostas a solicitações HTTP1.0, Certifique-se de testar seu site / aplicativo em todo o software cliente / proxy que você espera que os visitantes / usuários usem. Isso é um problema menor se você puder garantir que seu público-alvo usará determinado software (se, por exemplo, o aplicativo for apenas para uma rede corporativa interna), mas há muitas combinações para testar e é por isso que a maioria dos servidores desativa a compactação. 1,0 pedidos completamente.

    
por 11.06.2009 / 12:16