Pergunta

A partir de um post anterior sobre a tentativa de melhorar o meu desempenho sites eu tenho estado a olhar para HTTP compressão. Eu li sobre configurá-lo no IIS, mas parece ser uma coisa global para todos os pools de aplicativos do IIS não podem ser autorizados a fazer isso porque não há outro site rodando nele também. Então eu vi algum código para colocar em global.asax para conseguir a mesma coisa em uma base por site.

Veja aqui http://www.stardeveloper.com/articles/display.html?article=2007110401&page=1] 1

É este tão bom quanto a configuração no IIS? Como dramática é o efeito? Problemas conhecidos?

Foi útil?

Solução

Se você seguir em frente com isso, eu sugiro a implementação de um HttpModule contra global.asax. O HttpModule permite que você desabilite a compressão com uma mudança de configuração contra a reconstrução e permite que você macaco com sua compressão Assembléia separar do seu aplicativo web.

rico guindaste tem um módulo bastante agradável 2.0 aqui: http://www.codeplex.com/httpcompression/ se você quiser se levantar e correr rápido.

O blowery projeto Steven Rogers mencionado é um HttpModule também.

Caso contrário, escrever o seu próprio é bastante simples. A HttpModule lhe dá os mesmos eventos como global.asax -. BeginRequest, EndRequest, e mais fino eventos como PostReleaseRequestState e PreSendRequestHeaders que você pode precisar para resolver todas as rugas de grão

Quanto IIS compressão verus HttpModule, o IIS é definitivamente mais fácil desde que você não tem de mexer com outro Assembléia. Eu usei ambos os métodos com aplicativos de negócios e ambos executar quase igualmente em fase de testes de carga. Se o IIS está disponível, eu diria que usá-lo.

Entre compressão 60 e 80% para HTML, JS, CSS e arquivos XML é comum com gzip. Tenha em mente um monte de sua carga útil pode ser imagens e multimédia objetos que são muito mais difíceis de comprimir.

Outras dicas

http://blowery.org/httpcompress/

Nós usamos este utilitário de compressão no meu trabalho por um tempo. boa bonita.

Eu acho que a opção Global.asax será um bom se você estiver em um ambiente de hospedagem compartilhada por exemplo, onde você não tem acesso a configuração do IIS.

O IIS 6 fornece suporte de compressão básico, mas se você já está no IIS 7, que lhe fornece grande HTTP compressão apoio, você pode definir quais arquivos são compactados com base no seu tipo MIME em seus arquivos de configuração ...

Ele atinge essencialmente a mesma coisa que a compressão IIS - ambos acabam enviar a resposta com a compressão gzip. Eu tenho implementado recentemente este método, e ele consistentemente reduz tamanho de resposta em 60% sem pena impacto no desempenho preocupar.

Existem algumas questões possíveis. Em primeiro lugar, você precisa ter cuidado com o cache de saída. Você precisa usar um VaryBy personalizado para se certificar de que versões diferentes são armazenadas em cache para solicitações com diferentes cabeçalhos Accept-Encoding. Caso contrário, se a versão comprimida é armazenada em cache, em seguida, todos os usuários vão recebê-lo, ou não o seu navegador pode aceitá-lo.

Em segundo lugar, GZipStream, às vezes, truncar os últimos caracteres da resposta se você usa Response.End ou Response.Flush, porque o fluxo não está fechado até muito tarde. Eu não estou ciente de qualquer boa solução para isso.

Finalmente, isto só irá comprimir o HTML. Qualquer arquivos Javascript CSS ou será servido normalmente. Você precisaria, por exemplo, servir esses arquivos através de um IHttpHandler personalizado para comprimi-los.

Existem problemas com JavaScript e VBScript. O problema JavaScript foi confirmada em um comentário por xxldaniel em um codinghorror artigo , e eu tive problemas com VBScript (para automação M $ Office) usando um JSON-like "Scripting.Dictionary" com "Microsoft.XMLHTTP" pedido.

Você pode tentar mod_gzip módulos. Ele usa gerenciado versão ZLib e permite a configuração altamente ajustável. Sintaxe é compatível com o mesmo módulo Apache chamado e até mesmo ampliado. Assim, por exemplo, você poderia definir o nível de compressão diferente para diferentes tipos MIME e assim por diante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top