Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Um brodi perguntou estes dias sobre esquemas de cache pra deixar a página mais rápida.
Vou tentar explicar de forma resumida e rápida sobre cache em páginas web.
O termo cache designa o ato de guardar uma cópia de algo complexo ou lento para que se possa ter acesso mais rápido a este "algo complexo" futuramente. O cache web pode ser ativado em "várias frentes".
O cache que vou tratar aqui é o "cache web" de páginas web/http, ok? Nada a ver com cache em processador, e outras paradas.
O objetivo é deixar o site mais rápido pro seu visitante e com muito menos carga no seu servidor web.
Fonte: Introduçãozinha sobre cache web e no servidor - El Micox
Cache na Frente client
Quando você pede uma página web no seu navegador, ele a exibe, porém , além de exibir, pode ser que ele guarde ela (ou partes dela) "em cache" para caso você acesse ela novamente no futuro. Assim ele exibirá a página mais rápido pois partes dela (como imagens, scripts) estavam guardadas em seu cache interno e não precisaram ser pedidas novamente na rede.
No Firefox do Windows XP, o cache geralmente fica em Documents and Settingsnome_userConfigurações locaisDados de aplicativosMozillaFirefoxProfiles
Esta foi a "frente client" do cache (conhecido como "cache web") e ela pode ser exercida não só pelo navegador, mas por servidores proxy também, por exemplo.
Como implementar este cache web?
1) Através de meta tags no HTML (meta expires, cache-control, pragma)
2) OU headers enviados pelo script php/asp/jsp (também expires, cache-control, pragma)
3) OU header enviados diretamente pelo servidor web http (apache/IIS/etc) (novamente expires, cache-control, pragma).
Não vou detalhar cada um aqui pois não é o objetivo do post. Usa o google /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="Imagem Postada" />
Veja um detalhamento maior sobre cache web aqui: http://www.rnp.br/newsgen/0003/cache.html,
E aqui também (em inglês): http://www.rnp.br/newsgen/0003/cache.html
Cache na Frente server-side
Já a "frente server-side" atua no servidor web (cache server), pra ajudar o bixo a enviar a página pro navegador com maior rapidez.
Exemplo: Imagine que o navegador pede uma página que exibe uma lista de produtos e preços que está no banco de dados.
O coitado do servidor web terá que ligar o interpretador ASP (ou php ou outro), conectar com o banco de dados, fazer a consulta sql, aguardar o servidor sql processar a consulta, pegar os dados, formatar em html e só então devolver pro navegador.
Agora imagine que, além da lista de produtos, o server tenha que pegar também o menu do site no banco de dados, as últimas postagens, etc. Será um monte de consultas que deixarão o site lento pra caramba.
Agora imagine que o servidor é inteligente e, além de devolver o html pro navegador, ele também crie um arquivo com este html.
Assim, da próxima vez que algum navegador pedir a mesma página ele não precise fazer aquele monte de consultas sql e talz. É só mandar o arquivo html que estava salvo pro navegador.
Hahá! Seu server ficará aliviado e seu site mais rápido. Simples né?
Nem tanto hehe. Existem sistemas de cache server onde os caras guardam na memória RAM e não em arquivos pra ficar mais rápido ainda (MEMcached). Outros guardam só as consultas sql, outros guardam os arquivos em módulos (módulo menu, módulo option_cidades), etc.
Vai da sua imaginação e do seu sistema...
"Mas, sr mico, e se o conteúdo da página mudar?"
"Mas, sr mico, no meu site/sistema o sistema de fornecedores cadastra produtos a todo minuto, um sistema de cache não ajudaria muito pois o timeout teria que ser muito pequeno"
Uma implementação simples de cache server em ASP aqui: http://www.google.com.br/search?hl=pt-BR&source=hp&q=cache file asp&meta=&aq=f&oq=
Outras em PHP aqui: http://www.google.com.br/search?hl=pt-BR&q=cache+php+file&aq=f&aqi=&aql=&oq=&gs_rfai=
Conclusão
Pra sites com muitos acessos, sistema de cache são uma ótima salvação (antes tinha um palavrão aqui e o fórum transformou em @%#AS%# hhaahah). E você ainda pode implementar os 2 sistemas de cache em conjunto.
Eu já economizei bastante em servidor web implementando sistemas de cache. Princpalmente em blogs com o plugin super cache do wordpress (e recentemente o db cache reloaded graças ao Janio).
Na época do Mwords, o cache dava uma salvada boa nas trocentas requisições por segundo que tinha.
Devem existir outras frentes, outros modelos, outras formas... Se você souber lembre este mico através dos comentários.