Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
Upcoming SlideShare
Loading in …5
×

Maneiras de implementar um caching engine eficaz e eficiente

2,216 views

Published on

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.

Published in: Technology
  • Be the first to comment

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

×