Estou tentando definir minhas configurações de compactação do IIS7 no meu arquivo web.config. Estou tentando ativar solicitações HTTP 1.0 para serem gzip.
O MSDN tem todas as informações sobre isso aqui .
É possível ter essas informações de configuração no arquivo web.config do meu site? Ou preciso defini-lo no nível do 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 :( As solicitações HTTP 1.1 estão sendo compactadas, mas não a 1.0.
Essa página do MSDN acima diz que pode ser usada em: -
- Machine.config
- ApplicationHost.config
- Aplicativo raiz Web.config
- Aplicativo Web.config
- Diretório Web.config
Portanto, podemos definir essas configurações por site, programaticamente em um arquivo web.config? (este é um arquivo Application Web.config ...) O que fiz de errado?
Felicidades :)
Edição: 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
fonte
appcmd
para definir as configurações no nível do aplicativo (o que provavelmente é muito mais fácil).Após um bom período de pesquisa, ele é 'bloqueado' por padrão no nível do aplicativo. Como tal, ele precisa ser 'desbloqueado'. isso pode ser conseguido através da linha de comando ou das ferramentas administrativas do iis7 (download extra).
por exemplo.
appcmd set config -section:urlCompression /doDynamicCompression:true
Referências:
fonte
Como você está testando se 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 estiver testando no Firefox ou IEHTTPHeaders se estiver testando no IE ou detectando o tráfego usando uma ferramenta externa), você deve ver algo como
lá em algum lugar. Se o cliente não informar ao servidor que ele pode aceitar uma resposta compactada, o servidor não enviará uma, independentemente de outras configurações que você tenha do lado do servidor.
Outro problema pode ser se você estiver testando através de um servidor proxy que se identificou como tal. Nesse caso, a configuração noCompressionForProxies pode ter precedência e bloquear a possibilidade de uma resposta compactada.
Uma coisa a observar é que alguns clientes e proxys que enviam solicitações HTTP1.0 (geralmente software mais antigo) não manipularão corretamente uma resposta compactada se receberem uma; portanto, se você habilitar a compactação para respostas a solicitações HTTP1.0, verifique se teste seu site / aplicativo em todo o software cliente / proxy que você espera que os visitantes / usuários usem. Isso é menos problemático se você pode garantir que seu público-alvo usará determinado software (se, por exemplo, o aplicativo for apenas para uma rede corporativa interna), mas, caso contrário, existem muitas combinações para testar, e é por isso que a maioria dos servidores desabilita a compactação para 1.0 solicita completamente.
fonte