SlideShare uma empresa Scribd logo
Fabiano Weimar dos Santos [Xiru]
xiru@xiru.org
Faça seu portal voar usando o
plone.app.caching
Faça seu site voar com plone.app.caching 2
Roteiro
● Um pouco sobre mim...
● Cache É importante?
● Histórico
● plone.app.caching
● Demo
Faça seu site voar com plone.app.caching 3
Um pouco sobre mim...
● Os amigos me chamam de Xiru
● Já escrevi algumas linhas de código do
Plone, Archetypes e alguns Plone Products...
● Atualmente
● Ministro cursos a distância sobre Plone,
Segurança e Infraestrutura
● Sysadmin do provedor PyTown.com
● Consultor do Programa das Nações Unidas para
o Desenvolvimento - PNUD
Faça seu site voar com plone.app.caching 4
Cache É Importante?
● Cache é MUITO
importante se você
quer fazer seu site
“voar”
● Não importa a
tecnologia:
nenhum site
dinâmico sobrevive
sem cache
Faça seu site voar com plone.app.caching 5
Sobre o que eu não vou falar...
● A eficiência de um sistema depende de
infraestrutura
● Eu não vou falar sobre
● Plone + Squid
● Plone + Varnish
● Plone + Varnish + nginx
● memcached
● … mas você deve preocupar-se em utlizá-los
Faça seu site voar com plone.app.caching 6
Histórico
● O Plone sempre teve suporte a cache!
● HTTP Cache Manager “/HTTPCache”
● global_cache_settings
● Problemas:
● Elementos não eram associados com o
HTTPCache
● global_cache_settings padrão não fazia cache
compartilhado
Faça seu site voar com plone.app.caching 7
global_cache_settings
<metal:cacheheaders define-macro="cacheheaders">
<metal:block tal:content="structure python:here.enableHTTPCompression(request=request,
debug=0)" />
<metal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Type',
'text/html;;charset=%s' % charset)" />
<metal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Language', lang)" />
<metal:block tal:condition="python: not here.portal_membership.isAnonymousUser()">
<metal:block tal:define="dummy python:request.RESPONSE.setHeader('Expires', 'Sat, 1 Jan 2000
00:00:00 GMT')" />
<metal:block tal:define="dummy python:request.RESPONSE.setHeader('Cache-Control', 'private, no-
cache, no-store, must-revalidate, post-check=0, pre-check=0')" />
</metal:block>
<metal:block tal:condition="python: here.portal_membership.isAnonymousUser()">
<metal:block tal:define="dummy python:request.RESPONSE.setHeader('Expires', (DateTime()
+1.0/24).toZone('GMT').rfc822().replace('+0000', 'GMT'))" />
<metal:block tal:define="dummy python:request.RESPONSE.setHeader('Cache-Control', 'max-age=0,
s-maxage=3600')" />
</metal:block>
</metal:cacheheaders>
Faça seu site voar com plone.app.caching 8
CacheFu “moleque”
● Uso de “monkey patches” para associar
imagens e arquivos com o HTTPCache
● global_cache_settings ajustado para
cache compartilhado por 10 minutos
(sem PURGE)
● Em 2005, diversos bugs no Zope tiveram
que ser corrigidos para isso funcionar
Faça seu site voar com plone.app.caching 9
CacheFu
● Projeto iniciado como uma
interface de configuração
dos “monkey patches”
● Colaboração entre diversos
desenvolvedores
● Passou a armazenar
configurações de
cabeçalhos e regras de
cache numa “tool”
Faça seu site voar com plone.app.caching 10
CacheFu
● Foi a melhor solução para
gerenciamento de cache
até o Plone 3.3.5
● Arquitetura
“problemática” por
armazenar as
configurações no ZODB
● Deixou de ter releases a
partir do Plone 4.0
Faça seu site voar com plone.app.caching 11
plone.app.caching
● Sucessor do CacheFu a partir do Plone 4.0
● Utiliza recursos do Zope Component
Architecture – ZCA
● Armazena configurações no portal_setup
● Exportação e importação de configurações
utilizando XML
● Plone Products podem (e devem) empacotar
configurações
Faça seu site voar com plone.app.caching 12
plone.app.caching
● Empacotado no
Plone 4.1!
● Perfis padrão de
cache
● Sem proxy
● Com proxy
● Com proxy e “split-
view”
Faça seu site voar com plone.app.caching 13
Conjuntos de Regras Padrão
● Content feed
● RSS dinâmico
● Conteúdo de Imagens e Arquivos
● Download de arquivos ou imagens ou
utilizados na visualização de outros conteúdos
● Visualização de Pasta
● Visualização de um objeto com
comportamento de pasta, exibindo diversos
conteúdos
Faça seu site voar com plone.app.caching 14
Conjuntos de Regras Padrão
● Visualização de Conteúdo
● Visualização de um objeto único, que não tem
comportamento de pasta
● Recursos: Arquivos e Imagens
● Inclui arquivos e imagens criados ou personalizados através
da ZMI, aqueles disponibilizados através do portal_skins ou
diretórios registrados no sistema de arquivos
● Arquivos e Imagens Estáveis
● Recursos que não mudam, como CSS, JS e KSS registrados
através de sua respectivas ferramentas
● Podem ter cache para SEMPRE pois, quando um elemento
muda, a URL de acesso também muda
Faça seu site voar com plone.app.caching 15
Operações Cache Padrão
● Sem Cache
● Strong caching
● Cache no navegador e no proxy (padrão: 24 hours).
● Moderate caching
● Cache no navegador que expira automaticamente (o mesmo
que “weak caching”), e cache no proxy (padrão: 24 hours).
● Idealizado para utilizar uma estratégia de PURGE
– Cuidado: pode existir mais de um proxy na rede, não apenas o
Squid/Varnish configurado para essa tarefa
Faça seu site voar com plone.app.caching 16
Operações Cache Padrão
● Weak caching
● Cache no navegador, expirado automaticamente
● Espera um código 304 (“Not Modified”)
● Requer cabeçalhos “Last-Modified” e/ou “e-tags”
● Pode ser combinado com o PageCacheManager
– Cache na memória do Zope do conteúdo da página e
respectivos cabeçalhos
– Pode ser ineficiente em ambientes distribuídos
● Cuidado: validação condicional pode fazer com que
todos os requests sejam enviados para o backend
– Depende do proxy e de como o proxy foi configurado
Faça seu site voar com plone.app.caching 17
Mapeamento Padrão de Regras
e Operações de Cache
without-caching-
proxy
with-caching-proxy with-caching-proxy-
splitviews
itemView weakCaching weakCaching moderateCaching
folderView weakCaching weakCaching moderateCaching
feed weakCaching moderateCaching moderateCaching
file weakCaching moderateCaching moderateCaching
resource strongCaching strongCaching strongCaching
stableResource strongCaching strongCaching strongCaching
Faça seu site voar com plone.app.caching 18
PageCacheManager
● E-tags muito granulares =
explosão combinatória
● E-tags muito abrangentes =
problemas com conteúdo
● Cuidado: ao utilizar a data de
última atualização do
portal_catalog pode tornar o
cache em memória muito
ineficiente
Faça seu site voar com plone.app.caching 19
Demo
Faça seu site voar com plone.app.caching 20
Fabiano Weimar dos Santos
xiru@xiru.org
Twitter @xiru
Obrigado

Mais conteúdo relacionado

PDF
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
PDF
Desenvolvimento web com Python, Zope e Plone
PDF
Você sabe o que é Plone?
PDF
Plone tutorial ''mposso''
PDF
Apresentação wpd maceió
PDF
Plataforma Zope Plone na PGR
PDF
Quokka CMS - Content Management with Flask and Mongo #tdc2014
PDF
Vamos conversar sobre cache
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Desenvolvimento web com Python, Zope e Plone
Você sabe o que é Plone?
Plone tutorial ''mposso''
Apresentação wpd maceió
Plataforma Zope Plone na PGR
Quokka CMS - Content Management with Flask and Mongo #tdc2014
Vamos conversar sobre cache

Semelhante a Faça seu portal voar usando o plone.app.caching (20)

PDF
Melhores Práticas para o Desenvolvimento com Plone 4
PDF
Plone total#2 - Gerenciamento de conteúdos
ODP
Incubadora Virtual de Conteúdo Digitais
PDF
Python Zope Plone - Ftec
PDF
Plone Yak Shaving and Bikeshedding
PDF
Meu Plone Site está lento. O que fazer???
PDF
Palestra apresentanda na Python Brasil 9
PDF
Usando Django para servir 12 milhões de usuários
PDF
Offline Web com Service Workers - Sérgio Lopes
PDF
O Futuro do Plone
PDF
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
PDF
Otimização de infra estrutura para hospedagem de websites
PDF
O que todos os developers devem saber sobre seo
PDF
SEO para Front-End - BeagaJS
PDF
Python Zope Plone - Tchelinux
ODP
Escalabilidade em Aplicações - Fisl13
PDF
Otimizando Portais Plone: Dicas de Desempenho
PDF
Plone na nuvem
PDF
Introducao ao sistema de gerenciamento de conteúdo Plone
PPT
Qcon 2013 - Walmart Frontend Solution using Node.js
Melhores Práticas para o Desenvolvimento com Plone 4
Plone total#2 - Gerenciamento de conteúdos
Incubadora Virtual de Conteúdo Digitais
Python Zope Plone - Ftec
Plone Yak Shaving and Bikeshedding
Meu Plone Site está lento. O que fazer???
Palestra apresentanda na Python Brasil 9
Usando Django para servir 12 milhões de usuários
Offline Web com Service Workers - Sérgio Lopes
O Futuro do Plone
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
Otimização de infra estrutura para hospedagem de websites
O que todos os developers devem saber sobre seo
SEO para Front-End - BeagaJS
Python Zope Plone - Tchelinux
Escalabilidade em Aplicações - Fisl13
Otimizando Portais Plone: Dicas de Desempenho
Plone na nuvem
Introducao ao sistema de gerenciamento de conteúdo Plone
Qcon 2013 - Walmart Frontend Solution using Node.js
Anúncio

Mais de Fabiano Weimar (17)

PDF
Python Performance Review - Python Sul 2024
PDF
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
PDF
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
PDF
Integração de sistemas legados com Plone
PDF
Algoritmos genéticos em python - PyConBrasil 3 (2007)
PDF
Adaptando o Plone para plataformas móveis
PDF
Understanding Plone Security
PDF
Tips and Tricks about Plone Development for Mobile Platforms
PDF
Segurança no plone
PDF
Dicas e truques de otimização de websites python
PDF
Conhecendo o ubuntu enterprise cloud - UEC
PDF
Sistema de protocolo de documentos - SPDO
PDF
Novidades do plone 4
PDF
O novo plone 4
PDF
Reconhecimento de fala em português brasileiro
PDF
Plone na plataforma mobile
Python Performance Review - Python Sul 2024
Plone, Zope e Python - Da Universidade ao Governo - SulComp II (2006)
Portal SEBRAE - Quando o Plone Gerencia o Conteúdo Alheio
Integração de sistemas legados com Plone
Algoritmos genéticos em python - PyConBrasil 3 (2007)
Adaptando o Plone para plataformas móveis
Understanding Plone Security
Tips and Tricks about Plone Development for Mobile Platforms
Segurança no plone
Dicas e truques de otimização de websites python
Conhecendo o ubuntu enterprise cloud - UEC
Sistema de protocolo de documentos - SPDO
Novidades do plone 4
O novo plone 4
Reconhecimento de fala em português brasileiro
Plone na plataforma mobile
Anúncio

Último (16)

PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Arquitetura de computadores - Memórias Secundárias
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Processos na gestão de transportes, TM100 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
COBITxITIL-Entenda as diferença em uso governança TI
Arquitetura de computadores - Memórias Secundárias

Faça seu portal voar usando o plone.app.caching

  • 1. Fabiano Weimar dos Santos [Xiru] xiru@xiru.org Faça seu portal voar usando o plone.app.caching
  • 2. Faça seu site voar com plone.app.caching 2 Roteiro ● Um pouco sobre mim... ● Cache É importante? ● Histórico ● plone.app.caching ● Demo
  • 3. Faça seu site voar com plone.app.caching 3 Um pouco sobre mim... ● Os amigos me chamam de Xiru ● Já escrevi algumas linhas de código do Plone, Archetypes e alguns Plone Products... ● Atualmente ● Ministro cursos a distância sobre Plone, Segurança e Infraestrutura ● Sysadmin do provedor PyTown.com ● Consultor do Programa das Nações Unidas para o Desenvolvimento - PNUD
  • 4. Faça seu site voar com plone.app.caching 4 Cache É Importante? ● Cache é MUITO importante se você quer fazer seu site “voar” ● Não importa a tecnologia: nenhum site dinâmico sobrevive sem cache
  • 5. Faça seu site voar com plone.app.caching 5 Sobre o que eu não vou falar... ● A eficiência de um sistema depende de infraestrutura ● Eu não vou falar sobre ● Plone + Squid ● Plone + Varnish ● Plone + Varnish + nginx ● memcached ● … mas você deve preocupar-se em utlizá-los
  • 6. Faça seu site voar com plone.app.caching 6 Histórico ● O Plone sempre teve suporte a cache! ● HTTP Cache Manager “/HTTPCache” ● global_cache_settings ● Problemas: ● Elementos não eram associados com o HTTPCache ● global_cache_settings padrão não fazia cache compartilhado
  • 7. Faça seu site voar com plone.app.caching 7 global_cache_settings <metal:cacheheaders define-macro="cacheheaders"> <metal:block tal:content="structure python:here.enableHTTPCompression(request=request, debug=0)" /> <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Type', 'text/html;;charset=%s' % charset)" /> <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Language', lang)" /> <metal:block tal:condition="python: not here.portal_membership.isAnonymousUser()"> <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Expires', 'Sat, 1 Jan 2000 00:00:00 GMT')" /> <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Cache-Control', 'private, no- cache, no-store, must-revalidate, post-check=0, pre-check=0')" /> </metal:block> <metal:block tal:condition="python: here.portal_membership.isAnonymousUser()"> <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Expires', (DateTime() +1.0/24).toZone('GMT').rfc822().replace('+0000', 'GMT'))" /> <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Cache-Control', 'max-age=0, s-maxage=3600')" /> </metal:block> </metal:cacheheaders>
  • 8. Faça seu site voar com plone.app.caching 8 CacheFu “moleque” ● Uso de “monkey patches” para associar imagens e arquivos com o HTTPCache ● global_cache_settings ajustado para cache compartilhado por 10 minutos (sem PURGE) ● Em 2005, diversos bugs no Zope tiveram que ser corrigidos para isso funcionar
  • 9. Faça seu site voar com plone.app.caching 9 CacheFu ● Projeto iniciado como uma interface de configuração dos “monkey patches” ● Colaboração entre diversos desenvolvedores ● Passou a armazenar configurações de cabeçalhos e regras de cache numa “tool”
  • 10. Faça seu site voar com plone.app.caching 10 CacheFu ● Foi a melhor solução para gerenciamento de cache até o Plone 3.3.5 ● Arquitetura “problemática” por armazenar as configurações no ZODB ● Deixou de ter releases a partir do Plone 4.0
  • 11. Faça seu site voar com plone.app.caching 11 plone.app.caching ● Sucessor do CacheFu a partir do Plone 4.0 ● Utiliza recursos do Zope Component Architecture – ZCA ● Armazena configurações no portal_setup ● Exportação e importação de configurações utilizando XML ● Plone Products podem (e devem) empacotar configurações
  • 12. Faça seu site voar com plone.app.caching 12 plone.app.caching ● Empacotado no Plone 4.1! ● Perfis padrão de cache ● Sem proxy ● Com proxy ● Com proxy e “split- view”
  • 13. Faça seu site voar com plone.app.caching 13 Conjuntos de Regras Padrão ● Content feed ● RSS dinâmico ● Conteúdo de Imagens e Arquivos ● Download de arquivos ou imagens ou utilizados na visualização de outros conteúdos ● Visualização de Pasta ● Visualização de um objeto com comportamento de pasta, exibindo diversos conteúdos
  • 14. Faça seu site voar com plone.app.caching 14 Conjuntos de Regras Padrão ● Visualização de Conteúdo ● Visualização de um objeto único, que não tem comportamento de pasta ● Recursos: Arquivos e Imagens ● Inclui arquivos e imagens criados ou personalizados através da ZMI, aqueles disponibilizados através do portal_skins ou diretórios registrados no sistema de arquivos ● Arquivos e Imagens Estáveis ● Recursos que não mudam, como CSS, JS e KSS registrados através de sua respectivas ferramentas ● Podem ter cache para SEMPRE pois, quando um elemento muda, a URL de acesso também muda
  • 15. Faça seu site voar com plone.app.caching 15 Operações Cache Padrão ● Sem Cache ● Strong caching ● Cache no navegador e no proxy (padrão: 24 hours). ● Moderate caching ● Cache no navegador que expira automaticamente (o mesmo que “weak caching”), e cache no proxy (padrão: 24 hours). ● Idealizado para utilizar uma estratégia de PURGE – Cuidado: pode existir mais de um proxy na rede, não apenas o Squid/Varnish configurado para essa tarefa
  • 16. Faça seu site voar com plone.app.caching 16 Operações Cache Padrão ● Weak caching ● Cache no navegador, expirado automaticamente ● Espera um código 304 (“Not Modified”) ● Requer cabeçalhos “Last-Modified” e/ou “e-tags” ● Pode ser combinado com o PageCacheManager – Cache na memória do Zope do conteúdo da página e respectivos cabeçalhos – Pode ser ineficiente em ambientes distribuídos ● Cuidado: validação condicional pode fazer com que todos os requests sejam enviados para o backend – Depende do proxy e de como o proxy foi configurado
  • 17. Faça seu site voar com plone.app.caching 17 Mapeamento Padrão de Regras e Operações de Cache without-caching- proxy with-caching-proxy with-caching-proxy- splitviews itemView weakCaching weakCaching moderateCaching folderView weakCaching weakCaching moderateCaching feed weakCaching moderateCaching moderateCaching file weakCaching moderateCaching moderateCaching resource strongCaching strongCaching strongCaching stableResource strongCaching strongCaching strongCaching
  • 18. Faça seu site voar com plone.app.caching 18 PageCacheManager ● E-tags muito granulares = explosão combinatória ● E-tags muito abrangentes = problemas com conteúdo ● Cuidado: ao utilizar a data de última atualização do portal_catalog pode tornar o cache em memória muito ineficiente
  • 19. Faça seu site voar com plone.app.caching 19 Demo
  • 20. Faça seu site voar com plone.app.caching 20 Fabiano Weimar dos Santos xiru@xiru.org Twitter @xiru Obrigado