Maneiras de implementar um caching
      engine eficaz e eficiente

    Almir Neto – almirneto@gmail.com

       PHP Confe...
Maneiras de implementar um caching
          engine eficaz e eficiente

Grupo de Desenvolvedores PHP de Goiás
●   Lista de...
Maneiras de implementar um caching engine eficaz e eficiente




          O que é cache?

Cache é um dispositivo de acess...
Maneiras de implementar um caching engine eficaz e eficiente




Para que utilizar cache no PHP?
  Ao realizar cache de um...
Maneiras de implementar um caching engine eficaz e eficiente



           Tipos de Cache
• Cache de Dados
   - Cache de i...
Maneiras de implementar um caching engine eficaz e eficiente




   Como implementar Cache?
• APC
• Memcached
• Smarty
• M...
Maneiras de implementar um caching engine eficaz e eficiente



  APC - Alternative PHP Cache
- Extensão do PECL
- Instala...
Maneiras de implementar um caching engine eficaz e eficiente


                    Memcached
- Extensão do PECL
- Sistema ...
Maneiras de implementar um caching engine eficaz e eficiente


                   Memcached
<?php
$id = (int) $_GET['id'];...
Maneiras de implementar um caching engine eficaz e eficiente



                         Smarty
- Sistema de Template
- Ge...
Maneiras de implementar um caching engine eficaz e eficiente



                           Smarty
<?php
require 'smarty/Sm...
Maneiras de implementar um caching engine eficaz e eficiente



                    Rasmus' trick
 • Conhecida como a Mane...
Maneiras de implementar um caching engine eficaz e eficiente



  Fluxo da execução
               1ª execução




       ...
Maneiras de implementar um caching engine eficaz e eficiente



  Fluxo da execução
          Próximas execuções




     ...
Maneiras de implementar um caching engine eficaz e eficiente



Configurando o Apache


      ErrorDocument 404 /gerarCach...
Maneiras de implementar um caching engine eficaz e eficiente



           Show me the code!
gerarCache.php




          ...
Maneiras de implementar um caching engine eficaz e eficiente



       Como limpar o cache?
Limpar todo o cache através de...
Maneiras de implementar um caching engine eficaz e eficiente



Como limpar o cache?
     Limpar um determinado arquivo


...
Maneiras de implementar um caching engine eficaz e eficiente


     Bibliografia / Agradecimentos
• Elton Minetto:
  http:...
Maneiras de implementar um caching engine eficaz e eficiente




                   Fim



                       Almir Ne...
Próximos SlideShares
Carregando em…5
×

Maneiras de implementar um caching engine eficaz e eficiente

1.667 visualizações

Publicada em

Softwares que tem milhares de acessos simultâneos geralmente não conseguem sobreviver sem um bom sistema de cache. E há várias soluções eficazes com esse objetivo, desde bibliotecas como o Smarty até soluções em que não é necessário utilizar nenhuma biblioteca, como a maneira Rasmus Lerdorf de implementar cache utilizando a página de erro 404.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.667
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
43
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Maneiras de implementar um caching engine eficaz e eficiente

  1. 1. Maneiras de implementar um caching engine eficaz e eficiente Almir Neto – almirneto@gmail.com PHP Conference Brazil 2009 http://www.phpconf.com.br Osasco, 27 de Novembro de 2009
  2. 2. Maneiras de implementar um caching engine eficaz e eficiente Grupo de Desenvolvedores PHP de Goiás ● Lista de Discussão ● Troca de Conhecimentos ● Encontros ● Palestras ● Eventos ● http://www.php.org.br ● http://www.gophp.com.br
  3. 3. Maneiras de implementar um caching engine eficaz e eficiente O que é cache? Cache é um dispositivo de acesso rápido, que tem como objetivo aumentar a performance de aplicações Almir Neto - @almirneto almirneto@gmail.com
  4. 4. Maneiras de implementar um caching engine eficaz e eficiente Para que utilizar cache no PHP? Ao realizar cache de uma página PHP o usuário irá acessar diretamente o arquivo HTML. Com isso o tempo gasto com o processamento da página é nulo. Almir Neto - @almirneto almirneto@gmail.com
  5. 5. Maneiras de implementar um caching engine eficaz e eficiente Tipos de Cache • Cache de Dados - Cache de informações contidas em um banco de dados ou em um objeto • Cache de Páginas - Cache no qual a página inteira é armazenada na memória Almir Neto - @almirneto almirneto@gmail.com
  6. 6. Maneiras de implementar um caching engine eficaz e eficiente Como implementar Cache? • APC • Memcached • Smarty • Maneira Rasmus Lerdorf de implementar Cache
  7. 7. Maneiras de implementar um caching engine eficaz e eficiente APC - Alternative PHP Cache - Extensão do PECL - Instalação via linha de comando - Possibilita armazenar variáveis no cache, e recuperar essas informações posteriormente. - As informações adicionadas no cache persistirão entre requisições até que sejam removidas. - Ideal para armazenar cache de informações com poucas mudanças em sistemas com grande número de alterações das informações Exemplo: Tabelas de apoio, como UF, Cidade, CEP, etc - Simples utilização Almir Neto - @almirneto almirneto@gmail.com
  8. 8. Maneiras de implementar um caching engine eficaz e eficiente Memcached - Extensão do PECL - Sistema distribuído de cacheamento de recursos - Tem o objetivo de reduzir a carga no banco de dados - Possibilidade de adicionar vários servidores, cada um com um “peso” - Utilização parecida com o APC - Possibilidade de criar adicionar objetos com tempo de vida pré- definidos - Possibilidade de excluir objetos manualmente - É possível utilizar o memcached como se fosse uma session - Quem utiliza: Facebook, Youtube, Flickr Almir Neto - @almirneto almirneto@gmail.com
  9. 9. Maneiras de implementar um caching engine eficaz e eficiente Memcached <?php $id = (int) $_GET['id']; $cache_id = "noticia::$id"; $memcache = new Memcache(); $memcache->connect('localhost', 11211); if(!($noticia = $memcache->get($cache_id))) { $noticia = new Noticia($id); $memcache->set($cache_id,$noticia); } Almir Neto - @almirneto almirneto@gmail.com
  10. 10. Maneiras de implementar um caching engine eficaz e eficiente Smarty - Sistema de Template - Gera cache do template - Se algum template for alterado o Smarty recompila automaticamente - Permite definir um tempo de vida para o template cacheado - Permite limpar o cache manualmente - Cache dinâmico Almir Neto - @almirneto almirneto@gmail.com
  11. 11. Maneiras de implementar um caching engine eficaz e eficiente Smarty <?php require 'smarty/Smarty.class.php'; $id = (int) $_GET['id']; $smarty = new Smarty(); $smarty->caching = 1; if(!$smarty->is_cached('noticia.tpl',$id)) { //Carrega do banco de dados } $smarty->display('noticia.tpl',$id); Almir Neto - @almirneto almirneto@gmail.com
  12. 12. Maneiras de implementar um caching engine eficaz e eficiente Rasmus' trick • Conhecida como a Maneira Rasmus Lerdorf de implementar cache • Técnica criada por Stig Bakken • Passos: – Altera-se a página de erro 404 para que esta chame um arquivo PHP. – O arquivo PHP gera uma página HTML com o nome que o usuário tentou acessar Dessa forma, o primeiro usuário que acessar vai gerar os arquivos HTML, e os próximos vão acessar diretamente o arquivo gerado, sem a necessidade da execução do PHP. Almir Neto - @almirneto almirneto@gmail.com
  13. 13. Maneiras de implementar um caching engine eficaz e eficiente Fluxo da execução 1ª execução Almir Neto - @almirneto almirneto@gmail.com
  14. 14. Maneiras de implementar um caching engine eficaz e eficiente Fluxo da execução Próximas execuções Almir Neto almirneto@gmail.com
  15. 15. Maneiras de implementar um caching engine eficaz e eficiente Configurando o Apache ErrorDocument 404 /gerarCache.php Almir Neto almirneto@gmail.com
  16. 16. Maneiras de implementar um caching engine eficaz e eficiente Show me the code! gerarCache.php Almir Neto almirneto@gmail.com
  17. 17. Maneiras de implementar um caching engine eficaz e eficiente Como limpar o cache? Limpar todo o cache através de um arquivo em background Almir Neto almirneto@gmail.com
  18. 18. Maneiras de implementar um caching engine eficaz e eficiente Como limpar o cache? Limpar um determinado arquivo Almir Neto almirneto@gmail.com
  19. 19. Maneiras de implementar um caching engine eficaz e eficiente Bibliografia / Agradecimentos • Elton Minetto: http://www.eltonminetto.net/docs/app_web_escalaveis_xxe.pdf • Smarty: http://www.smarty.net • PHPSP: http://phpsp.org.br/2008/06/30/smarty-e-caching/ • Memcached http://www.danga.com/memcached/ • APC http://www.php.net/apc • Felipe Ribeiro http://imasters.uol.com.br/artigo/11191 Almir Neto almirneto@gmail.com
  20. 20. Maneiras de implementar um caching engine eficaz e eficiente Fim Almir Neto almirneto@gmail.com

×