Página 1 de 4

[TUTORIAL] Gzip e Cache via .htaccess

Enviado: 26 Abr 2011, 11:20
por acesbrasil
Olá Pessoal,

Alguns já devem ter visto que Painel de Administração do Open Cart, na guia Servidor, tem um campo que pede um número de 0 a 9 para compressão do Gzip

Gzip? O que é?
Para quem não sabe, o Gzip é resumidamente um processo executado pelo servidor Web que comprime as páginas e as envia para o navegador, fazendo assim parecer que o seu site é rápido de abrir

É importante ressaltar o Gzip não é um passe de mágica, existem outros detalhes que precisam ser executados para que o Gzip possa ser 100% eficiente, do contrário ele será um recurso ativado porém sub-utilizado, por exemplo, é preciso compactar as imagens principais utilizando o http://www.smushit.com antes de enviar para o site, é preciso criar um subdomínio só para alocar as imagens, é preciso colocar a chamada dos CSS antes da chamada dos Scriptis do Java, é preciso dar o comando para fazer cache da sua página (isso inclui os scripts e as fotos) e dar uma data de expiração, do contrário toda hora que o visitante for acessar uma página será feito a chamada de todos aqueles arquivos que muitas vezes só precisam ser chamados uma única vez pois serão iguais em todas as partes do site, por exemplo, o cabeçalho, o rodapé e os scripts do Java, mas tudo isso também é assunto para outro tópico, se algúem tiver interesse nessas técnicas acima faz o pedido aqui que a gente explica

Vamos ao que interessa:

1 - Procure na pasta raiz da sua loja um arquivo chamado .htaccess ou htaccess.txt (se você não tem o .htaccess é preciso renomear o htaccess.txt para .htaccess, essa renomeção só funciona se você fizer via FTP diretamente dentro do seu servidor, não adianta baixar o arquivo e tentar renomear no Windows porque ele nao deixa, acho que Linux e OSx aceitam)

2 - Com o arquivo renomeado para .htaccess agora você pode baixar para o seu computador ou executar diretamente no seu servidor a edição dele, pode abrir diretamente como Bloco de Notas

3 - Faça backup do seu arquivo .htaccess por segurança

3 - Se encontrar algum código dentro do arquivo, não altere nada, vá para o fim do arquivo, dê uma linha em branco para dar espaço e adicione esse código
Código: Selecionar todos
AddOutputFilterByType DEFLATE text/html text/plain text/xml 
4 - Salve o arquivo, feche e envie de volta para o servidor gravando por cima

5 - Entre no Painel de Administração da sua loja, acesse a guia Servidor e coloque 9 no campo que pede o nível de compressão para Gzip (9 para aqueles que possuem um bom servidor de Hospedagem, quem tiver servidor próprio deve ir testando para não sobrecarregar o servidor de Hospedagem), salve e saia da administração

6 - Limpe o cache e os cookies de todos os navegadores que você tiver na máquina, acesse o seu site como se fosse um cliente e veja se nota diferença

6.1 - Se deu tudo OK até o item 6, ótimo, você poderá ir para o nível 2, vá direto para item 7

6.2 - Caso apareça algum erro no acesso, basta remover do arquivo .htacces a linha
Código: Selecionar todos
AddOutputFilterByType DEFLATE text/html text/plain text/xml 
6.2.1 - Troque a linha
Código: Selecionar todos
AddOutputFilterByType DEFLATE text/html text/plain text/xml 
por esse código
Código: Selecionar todos
<ifModule mod_gzip.c>

  mod_gzip_on Yes

  mod_gzip_dechunk Yes

  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$

  mod_gzip_item_include handler ^cgi-script$

  mod_gzip_item_include mime ^text/.*

  mod_gzip_item_include mime ^application/x-javascript.*

  mod_gzip_item_exclude mime ^image/.*

  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</ifModule>
7 - Com o recurso Deflate instalado você poderá adicionar um recurso extra na compressão Gzip que é o módulo do próprio Gzip, basta adicionar o código a seguir logo após ter adicionado o item 3
Código: Selecionar todos
<ifModule mod_gzip.c>

  mod_gzip_on Yes

  mod_gzip_dechunk Yes

  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$

  mod_gzip_item_include handler ^cgi-script$

  mod_gzip_item_include mime ^text/.*

  mod_gzip_item_include mime ^application/x-javascript.*

  mod_gzip_item_exclude mime ^image/.*

  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</ifModule>

8 - Repita o item 5 para testar a sua loja e ver a diferença
----------------------------------------------------------------------------------------------------

Cache? O que é?
Para quem não sabe o que é cache (que não é cachê, comissão gerada por participação), cache é uma técnica utilizada pelos navegadores para "acelerar" a navegação nos sites quando estes possuem o comando para que isso aconteça.

Como funciona o cache ?
Quando o cache está habilitado o navegador pega o arquivo que possui ordem para fazer cache e coloca uma cópia dele dentro do seu computador numa pasta de arquivos temporários da internet, pois quando este comando não existe o navegador então entende que toda vez que acessar aquela página, mesmo que você já tenha visitado ela, ele fará todo o downlad da página outra vez, sendo assim, é muito mais rápido o navegador buscar dentro do seu computador do que baixar novamente o mesmo arquivo.

Porém o cache é uma faca de dois gumes, pois se o comando para fazer cache não possuir um comando para informar ao navegador quando ele arquivo que ele fez o download deve ser substituído, você correrá o risco de fazer um visitante navegar pelo seu site com informações desatualizadas ou com erros, pois ele estará navegando com arquivos que estão dentro do computador dele e que podem já terem sidos substituídos no seu site, porém pela falta de comando de troca o navegador então não fez um novo download.

O tempo para realizar essa troca deve ser avaliado com cautela para que não sejam realizadas trocas constantes fazendo o recurso do cache perder efeito pois o navegador ficaria fazendo downloads ou ficaria navegando com informações desatualizadas, os grandes portais de notícias e as grandes lojas de comércio eletrônico usam o comando de troca, chamado de expiração, com data de 1 dia, ou seja, a cada 24h que o navegador passar por aquele mesmo endereço ele atualiza as informações.

Vamos ao que interessa:

Abra o arquivo .htaccess e vá ao fim dele para adicionar os dois seguintes módulos:
Código: Selecionar todos
<ifModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "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"
</ifModule>

<ifModule mod_headers.c>
  <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|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 "\\.(xml|txt)$">
    Header set Cache-Control "max-age=216000, public, must-revalidate"
  </filesMatch>
  <filesMatch "\\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, private, must-revalidate"
  </filesMatch>
</ifModule>
Com esse módulo do Gzip, o comando para cache, todos os CSS sendo executado antes do Javascript e as imagens puxadas pelos CSS e PHP em outro subdomínio, minha loja está com 80 pontos de um total de 100 quando analizada pelo Google Page Speed

Estamos as ordens

Re: [TUTORIAL] Gzip no Opencart

Enviado: 26 Abr 2011, 13:03
por Manoel Vidal
Parabéns! Ótimo tutorial :D

Só lembrando que tem como criar/renomear o arquivo .htaccess no Windows com uma simples dica, inclusive da para habilitar a url amigável para teste no Windows mesmo, segue o link da dica:
https://forum.opencartbrasil.com.br/ ... f=18&t=107

Re: [TUTORIAL] Gzip no Opencart

Enviado: 26 Abr 2011, 13:20
por acesbrasil
Manoel Vidal escreveu:Parabéns! Ótimo tutorial :D

Só lembrando que tem como criar/renomear o arquivo .htaccess no Windows com uma simples dica, inclusive da para habilitar a url amigável para teste no Windows mesmo, segue o link da dica:
https://forum.opencartbrasil.com.br/ ... f=18&t=107
Valeu Vidal pela correção. Quando escrevi quis dizer a renomear utilizando apenas o windows, sem recursos extras como servidor local ou etc

Abraços e sucesso a todos

Re: [TUTORIAL] Gzip e Cache via .htaccess

Enviado: 05 Mai 2011, 21:08
por Ruan
Olá, desculpe ressuscitar o tópico mas é pq fiquei uma dúvida:
Qual a diferença do gzip que está lá no painel de configurações para esse seu método?

Pq lá tem um nível de gzip (de 0 a 9 se não me engano) e tbm li, não sei onde, que se definir um gzip muito alto pode afetar nas pesquisas do Google, é verdade?

Abraços e parabéns pelo tutorial!

Re: [TUTORIAL] Gzip e Cache via .htaccess

Enviado: 05 Mai 2011, 21:37
por acesbrasil
Ruan escreveu:Olá, desculpe ressuscitar o tópico mas é pq fiquei uma dúvida:
Qual a diferença do gzip que está lá no painel de configurações para esse seu método?

Pq lá tem um nível de gzip (de 0 a 9 se não me engano) e tbm li, não sei onde, que se definir um gzip muito alto pode afetar nas pesquisas do Google, é verdade?

Abraços e parabéns pelo tutorial!
Qual a diferença do gzip que está lá no painel de configurações para esse seu método?
O recurso de Gzip no painel de controle do Open Cart só funciona se no .htaccess estiver o módulo que roda o Gzip, ou seja, no Open Cart a numeração é como um controle de intensidade e no .htaccess o On ou Off

...um gzip muito alto pode afetar nas pesquisas do Google, é verdade?
Negativo, os robôs do Google não abrem as páginas, ou seja, não sofrem nenhuma interferência de compressão ou descompressão e mesmo que sofressem, você acha que uma estrutura como a Google iria sofrer alguma influência de sites simples como os nossos?

Os robôs dos google lêem a programação do site e buscam as referências <a> e </a> que definem links e assim eles vão montando a estrutura da tua página na indexação deles, claro que há mais coisas mas é só pra começar a entender que o Gzip não faz interferência no Google

Prazer em ajudar, estamos a disposição

Re: [TUTORIAL] Gzip e Cache via .htaccess

Enviado: 06 Mai 2011, 06:48
por Ruan
Muito obrigado pela resposta José!
Tenho que aprender muita coisa do Open Cart ainda hehe

Abraços e mais uma vez: Parabéns pelos tutoriais!

Re: [TUTORIAL] Gzip e Cache via .htaccess

Enviado: 31 Out 2011, 09:58
por yuri
Curti cara, testei na 1.5 com Hospedagem no Brasil Fico bem mais rapido sem falar a pontuação no Google deu um Up

Falha - Gzip e Cache via .htaccess

Enviado: 27 Dez 2011, 12:45
por arbex5
Olá pessoal.
Tentei habilitar o recurso do GZIP no opencart 1.5.1.3.1 seguindo o tutorial, mas está dando a seguinte mensagem pelo mozilla:

Content Encoding Error
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

Imagem

No chrome simplemente diz que a página não está disponível.

This webpage is not available

Alguma sugestão?
Obrigado.

Re: [TUTORIAL] Gzip e Cache via .htaccess

Enviado: 03 Jan 2012, 11:32
por arbex5
Consegui resolver o problema.
O que aconteceu é que quando ativei a compactação do gzip no OpenCart através do menu Sistema > Configurações > Servidor > Nível de Compressão: 1a9 e coloquei no .htaccess as diretivas para compactação, ficou duplicado o processo de compactação.
O certo seria deixar somente no .htaccess ou somente no OpenCart.

O que fiz, e testei, foi deixar no .htaccess somente.
Para os interessados, com meu novo .htaccess o meu score no google page speed passou de 42 para 80.
Nada mal com um aumento de praticamente 100%

Ambiente de teste: OpenCart 1.5.1.3.1
Tradução obtida nesta comunidade.

Aqui está o .htacess :

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
Order deny,allow
Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule sitemap.xml /index.php?route=feed/google_sitemap
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

#AddOutputFilterByType DEFLATE text/html text/plain text/xml

################ Controle do tempo de Expiração ################
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
</ifModule>

<ifModule mod_headers.c>
<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|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=604800, private"
</filesMatch>
<filesMatch "\\.(xml|txt)$">
Header set Cache-Control "max-age=216000, public, must-revalidate"
</filesMatch>
<filesMatch "\\.(html|htm|php)$">
Header set Cache-Control "max-age=1, private, must-revalidate"
</filesMatch>
</ifModule>

# Ativa o tempo de expiração dos conteúdos
ExpiresActive On
ExpiresDefault A0

################## Ativa compactação GZip ###################
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Re: [TUTORIAL] Gzip e Cache via .htaccess

Enviado: 03 Jan 2012, 11:51
por Renato Frota
Obrigado pelo seu feedback =)