Apache mod_cache e mod_deflate?

2

Temos um Apache 2.2 com mod_cache e mod_deflate entre outros módulos. O problema é que se anexarmos o cabeçalho Vary como na documentação do Apache ...

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

... acabamos tendo uma cópia do recurso exibido para cada variação de agente do usuário em nosso cache. Isso desperdiça espaço em disco e diminui a taxa de acertos.

Então, qual é a solução preferida para esse problema? Vala o cabeçalho Vary e comprime apenas recursos "seguros" como o html normal?

    
por Petteri Hietavirta 07.02.2011 / 13:14

1 resposta

7

O motivo para configurar o cabeçalho para variar pelo agente do usuário é que a configuração recomendada do Apache para o mod_deflate serve versões não compactadas de algum conteúdo para usuários do Netscape 4. Provavelmente, existem poucos usuários suficientes do Netscape 4 agora que você pode apenas servir conteúdo compactado para todos os navegadores que afirmam suportá-lo, e não variam de acordo com o agente do usuário.

Então, em vez da configuração recomendada:

<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
# 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>

Você pode ter apenas:

<Location />
# Insert filter
SetOutputFilter DEFLATE

# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
</Location>
    
por 07.02.2011 / 13:26