Ir ao conteúdo
  • Cadastre-se
kleber-caetano

Cache no Apache 2

Recommended Posts

Olá Sr(s) e Lucas ( rsrsrsrs ).

Estou aqui de novo.

O tempo de resposta do meu servidor está muito ruim.

Pesquisando na internet , verifiquei que é possível realizar cache no apache.

Através deste recurso é possível melhorar o tempo de navegação ?

Existem pontos desfavoráveis em sua utlização ?

Utilizei a seguinte especificação no servidor e estação de trabalho

( e funcionou ) :

#

# Suporte a Cache

# carregar os modulos : mod_expires.so e mod_headers.so

#

<IfModule mod_expires.c>

ExpiresActive On

ExpiresDefault "access plus 1 seconds"

ExpiresByType text/html "access plus 1 seconds"

ExpiresByType image/gif "access plus 120 minutes"

ExpiresByType image/jpeg "access plus 120 minutes"

ExpiresByType image/png "access plus 120 minutes"

ExpiresByType text/css "access plus 60 minutes"

ExpiresByType text/javascript "access plus 60 minutes"

ExpiresByType application/x-javascript "access plus 60 minutes"

ExpiresByType application/x-shockwave-flash "access 60 minutes"

ExpiresByType text/xml "access plus 60 minutes"

</IfModule>

Nota - Verifiquei que existe os modulos mod_cache.so , mod_disk_cache.so ,

mod_mem_cache.so , com o seguinte exemplo de utilização :

Chapter 9 - Advanced Web Performance Optimization

Content is stored in and retrieved from the cache using URI-based keys.

Content with access protection is not cached.

Example 9-1. Sample mod_cache configuration file

#

# Sample Cache Configuration

#

LoadModule cache_module modules/mod_cache.so

<IfModule mod_cache.c>

#LoadModule disk_cache_module modules/mod_disk_cache.so

# If you want to use mod_disk_cache instead of mod_mem_cache,

# uncomment the line above and comment out the LoadModule line below.

<IfModule mod_disk_cache.c>

CacheRoot c:/cacheroot

CacheEnable disk /

CacheDirLevels 5

CacheDirLength 3

</IfModule>

LoadModule mem_cache_module modules/mod_mem_cache.so

<IfModule mod_mem_cache.c>

CacheEnable mem /

MCacheSize 4096

MCacheMaxObjectCount 100

MCacheMinObjectSize 1

MCacheMaxObjectSize 2048

</IfModule>

# When acting as a proxy, don't cache the list of security updates

CacheDisable http://security.update.server/update-list/

</IfModule>

CacheDirLevels, set to 5, is the number of directory levels below the cache root that will be included in the cache data.

CacheDirLength, set to 3, sets the number of characters in proxy cache subdirectory names.

For more details, see the Apache documentation at http://httpd.apache.org/docs/2.2/mod/mod_cache.html.

Nota ( rsrsrs ) - Eu sei que estas seções devem estar dentro um uma tag

porém sou novo nisto ( ainda aprendo !!!! )

Todos estes recursos devem atuar conjuntamente ?

Confesso que não entendi direito a sua funcionalidade / aplicabilidade ?

Alguém já teve esta experiência de utilização ?

Nota - O meu receio é utilizar todos estes recursos e degradar o

ambiente sistêmico.

Caso existam sugestões e/ou questionamentos , me proponho a

realizar testes e reportá-los aqui.

Agradeço a atenção dispensada ,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realizei vários testes e constatei que :

- Quando acionado o cache de disco , o apache gravou vários sub-diretórios no diretório c:/cacheroot ( uns 100 ) sendo que na última pasta de cada sub-diretório gravou dois arquivos : um de dados ( .data ) e um header ( .header )

Não gostei disto pois o tempo de I/O deve ser muito alto portanto o desativei.

- A especificação do cache de memória ( MCacheSize 4096 ) funcionou bem no computador mais novo que possuo entretanto o mais antigo abriu o bico.

Redefini para uma configuração mínima necessária e o mais antigo passou a funcionar bem.

( ver https://my.loomhosts.com/knowledgebase/12/Apache-Recommendations-modmemcache.html )

- No computador antigo , a versão do apache é 2.0.55 e não consta na Secão 1: Global Environment ( do arquivo de configurações ) as declarações dos modulos mod_cache.so ; mod_disk_cache.so ; mod_mem_cache.so e mod_deflate.so.

Entretanto eles existem no diretório modulos do apache.

- Pelo que eu entendi , pesquisando na internet , o modulo mod_expires faz a

retenção na máquina do cliente ( o que é um gol ).

- Apliquei a compressão de arquivos com apache execto para imagens , pdf , rar , zip

As especificações devem ser declarado em um <VirtualHost *:porta>

Não entendi porque isto ?

LoadModule deflate_module modules/mod_deflate.so

<IfModule mod_deflate.c>

SetOutputFilter DEFLATE

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-vary

<IfModule mod_headers.c>

Header append Vary User-Agent

</IfModule>

</IfModule>

- No teste de compressão o computador antigo abriu o bico , já o novo funcionou bem.

Acho que a navegação ficou mais rápida sem grandes impactos no computador servidor.

Meu sentimento é que vale a pena utilizar estes recursos ( quando servidor ) porém

é difícil avaliar a sua relação custo / benefício.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode ter dois mundos:

1. Seus servidores são realmente ruins - não atendem as especificações que o sistema precisa para rodar

2. Seus servidores são bons, a ponto de serem mais do que suficientes, mas por algum motivo as requisições estão lentas.

Se for o primeiro mundo, não tem muito o que você possa fazer. Pode fazer "gambiarra" pra distribuir as requisições, pode implementar cache, pode fazer o que for. Vai continuar ruim.

Se for o segundo mundo, você pode ter vários tipos de problemas. Vários. Você pode:

1. Ter problema de estrutura de banco de dados. Como medir/identificar: calcule o tempo que o script demora para executar e o tempo que o BANCO demora para executar..

2. Ter problema de escalabilidade: seu software cresce conforme a quantidade de acessos. Seria por exemplo o caso de um site gigante como Facebook, Twitter, etc. Nesse caso você precisaria pesquisar e estudar MUITO sobre Escalabilidade.

3. Ter problema de desenvolvimento: Quanto mais requisições, mais lento será seu sistema. Sendo assim, criar 25 arquivos .js e .css separados só vai tornar seu site mais lento. Conhecimento imprescindível no seguinte link: Construindo Aplicações Web de Alta performance - Front End

Agora vamos falar de cache. Talvez você não saiba, mas cache é a ferramenta mais poderosa da web. Você já imaginou o que seria do Twitter ou Facebook se as informações não fossem cacheadas? seria impossível oferecer o serviço com tanta qualidade.

Sim, cache é poderoso mas ao mesmo tempo é perigoso, não saber aplicar cache pode fazer seu sistema "travar" e seus clientes pararem de receber atualizações. Por exemplo: você atualiza o javascript mas o do cliente está cacheado.. e aí?

O que posso falar é: cache é extremamente útil, mas é trabalhoso desenvolver um "sistema cacheado integro" e nem sempre "vale a pena o trabalho".

Veja se os seguintes links lhe ajudam (infelizmente a maioria todos em inglês)

http://www.slideshare.net/Blaine/scaling-twitter

http://highscalability.com/youtube-architecture

http://ruturaj.net/mysql-memcache-replication-and-delay/

http://www.escalabilidade.com/

http://www.script-tutorials.com/how-to-use-memcache-with-php/ (muito bom)

PS: Se for fazer cache, não creio que faze-lo por apache seja uma boa opção.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Considero cache essencial para um webserver muito acessado. O mod_cache é um cache básico mas já ajuda. Sim, você deve utilizar o mod_mem_cache e mod_disk_cache em conjunto. É interessante manter objetos pequenos em memória e os maiores em disco. Mas para um cache mais profissional, você pode considerar adicionar um servidor na frente destes webservers com uma aplicação especializada em cache como varnish ou squid. ;)

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×