Configuração do gzip do Apache

1

Eu tenho o apache 2.2.11 instalado no meu servidor e tenho tentado diminuir o tempo de carregamento das páginas do meu site com base no conselho do plugin yslow firefox.

Eu configurei o gzip e o etag e algumas de suas outras sugestões, mas notei no cabeçalho dos meus arquivos css que o etag está sendo anexado com o texto gzip.

Alguém sabe por que e como contornar isso?

Header from my server
Date    Sun, 07 Jun 2009 10:40:57 GMT
Server  Apache/2.2.11 (Fedora)
Last-Modified   Sun, 31 May 2009 15:06:38 GMT
Etag    "3b4-46b36a802bb80"-gzip
Accept-Ranges   bytes
Cache-Control   max-age=2592000
Expires Tue, 07 Jul 2009 10:40:57 GMT
Vary    Accept-Encoding
Content-Encoding    gzip
Content-Length  530
Connection  close
Content-Type    text/css

O mesmo código no meu pacote hospedado usa uma versão mais antiga do apache e não tem o mesmo problema. Isso poderia ser apenas um bug do apache?

Header from my hosting package
Date    Sun, 07 Jun 2009 10:48:26 GMT
Server  Apache/2.0.63 (FreeBSD) mod_python/3.3.1 Python/2.5.1 PHP/5.2.6 with Suhosin-Patch mod_fastcgi/2.4.6 mod_ssl/2.0.63 OpenSSL/0.9.7e-p1 DAV/2 mod_perl/2.0.4 Perl/v5.8.8
Last-Modified   Sat, 21 Feb 2009 13:54:52 GMT
Etag    "3b4-1d104300"
Accept-Ranges   bytes
Cache-Control   max-age=2592000
Expires Tue, 07 Jul 2009 10:48:26 GMT
Vary    Accept-Encoding
Content-Encoding    gzip
Content-Length  530
Connection  close
Content-Type    text/css
    
por Simon Foster 07.06.2009 / 12:53

3 respostas

4

Aqui está um ideal .htaccess que comprime e define cabeçalhos de expiração sutis.

# 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

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

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType image/x-icon "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 604800 seconds"
  ExpiresByType text/javascript "access plus 216000 seconds"
  ExpiresByType application/x-javascript "access plus 216000 seconds"
  ExpiresByType text/html "access plus 600 seconds"
  ExpiresByType application/xhtml+xml "access plus 600 seconds"
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(ico|jpe?g|png|gif|swf)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>
  <FilesMatch "\.(css)$">
    Header set Cache-Control "max-age=604800, public"
  </FilesMatch>
  <FilesMatch "\.(js)$">
    Header set Cache-Control "max-age=216000, private"
  </FilesMatch>
  <FilesMatch "\.(x?html?|php)$">
    Header set Cache-Control "max-age=600, private, must-revalidate"
  </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
  Header unset ETag
</IfModule>
FileETag None

<IfModule mod_headers.c>
  Header unset Last-Modified
</IfModule>

O artigo a seguir aborda o que ele faz e também fala sobre compactação:

link

Espero que ajude.

    
por 07.06.2009 / 15:05
2

O Apache mod_deflate está criando Etag exclusivo para cada entidade, conforme essas identificam a variante da entidade específica do URL. Cada variante negociada precisa ter ETag: s exclusivo. Para mod_deflate , é tão simples quanto adicionar a codificação à ETag já calculada.

Uma solução alternativa é remover a codificação do Etag:

<Location /js>
  RequestHeader  edit "If-None-Match" "^(.*)-gzip$" "$1"
  Header  edit "ETag" "^(.*[^g][^z][^i][^p])$" "$1-gzip"
</Location>

Se você estiver usando o Apache 2.5 com o módulo mod_deflate , poderá usar a diretiva DeflateAlterETag para especificar como o ETag hader deve ser alterado quando uma resposta for compactada.

DeflateAlterETag AddSuffix|NoChange|Remove

Fonte: link

Este blog postar sugerir remover Etags completamente e confiar no cabeçalho Cache-Control .

Para fazer isso em httpd.conf :

<IfModule mod_headers.c>
    Header unset ETag
</IfModule>

FileETag None

Note que, se as entidades gzip: ed por mod_deflate ainda carregarem o mesmo ETag que o plain, isso pode causar inconsistência nos caches proxy do ETag.

Mais informações aqui:

por 12.11.2015 / 15:33
0

Você pode explicar como configurou o gzip? Por exemplo, você está usando mod_deflate? Você pode postar trechos de seu httpd.conf, especialmente o campo AddOutputFilterByType? Eu segui essas instruções para o meu provedor de hospedagem específico e é possível que o texto / css não esteja na lista do seu provedor de hospedagem:

link

    
por 07.06.2009 / 14:33