mod_deflate - Configuração ideal para a maioria dos navegadores

7

Eu queria saber se alguém aqui poderia me ajudar a determinar a configuração padrão ideal para usar o mod deflate com o Apache. Basicamente, mod_deflate recomenda usar a seguinte configuração para começar imediatamente:

Compress only a few types

AddOutputFilterByType DEFLATE text/html text/plain text/xml http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

No entanto, apenas lendo o documento, você pode personalizar isso para todos os navegadores que estão por aí. Além disso, você pode personalizar o mod_deflate para todos os tipos diferentes de tipos mime. Eu queria saber se alguém lá fora experimentou essas configurações e encontrou uma configuração ideal para todos os navegadores.

Outro exemplo que o Apache fornece, mas mencione não usar se você não entender todas as opções de configuração:

<Location />
# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>

link

Eu entendo a maioria das definições de configuração e gostaria de configurar algo semelhante. Eu não me importaria de evitar a compactação de imagens e outras mídias que já estão compactadas. Os detalhes que eu tenho problemas com, é entender como isso reage com todos os diferentes navegadores lá fora, chrome, firefox, IE, Opera, etc ... Obviamente eu não estou preocupado com o Netscape 4.X. Espero que alguém já tenha testado tudo isso e possa recomendar uma boa configuração que atenda a esse critério.

Quero dizer, se é apenas uma questão de usar a configuração recomendada no documento, estou bem com isso, mas queria verificar apenas para ter certeza.

Apenas para fornecer alguns detalhes adicionais. Usamos o Apache como front para todos os nossos serviços web. Por exemplo: confluence, git, gitweb, etc ...

O Tomcat e outros serviços são intermediados por proxy através do Apache, por isso temos configurações para virtualhosts, mod_proxy com AJP, mod_ssl.

Minha empresa não tem uma equipe de TI dedicada, então tenho que definir muito isso no meu tempo livre. Eu apreciaria qualquer entrada que você possa fornecer.

Portanto, apenas para indicar claramente o que estou perguntando, qual é a configuração ideal para lidar com o conteúdo básico que precisa atender às solicitações do Apache para os navegadores principais?

Minha lista de tipos básicos de conteúdo até o momento:

  • text / html
  • text / plain
  • text / xml
  • text / x-js
  • text / javascript
  • text / css
  • application / xml
  • application / xhtml + xml
  • aplicativo / x-javascript
  • aplicativo / javascript
  • aplicativo / json

Tipos que obviamente não precisam ser compactados:

  • imagens - gif, jpg, png
  • arquivos - exe, gz, zip, sit, rar
por Jason Huntley 21.03.2012 / 16:24

1 resposta

9

Eu fui em frente e pesquisei isso. Depois de ler vários tutoriais e o documento do Apache, consegui juntar algo substancial, que parece funcionar bem. Usando a lista acima, eu reuni um conjunto de regras / declarativos que parecem manipular a compactação com os tipos de conteúdo principais:

<Location />
# Insert filter
SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/x-js text/javascript text/css 
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/x-javascript application/javascript
AddOutputFilterByType DEFLATE application/json

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \
    \.(?:exe|t?gz|zip|bz2|sit|rar)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

</Location>

Para o teste, eu basicamente usei o TamperData para Firefox e liguei o deflate logging para o apache:

link

Para o Apache, adicione o seguinte:

# For Testing Purposes
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

link

    
por 22.03.2012 / 15:07