BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

Caching HTTP suave com Rack::Cache

| por Sebastien Auvray , traduzido por Flávia Castro de Oliveira em 17 nov 2008. Tempo estimado de leitura: 1 minuto |

As formas de cache de uma aplicação web são numerosas e muitas vezes complexas. O caching básico do Rails pode tornar tedioso o gerenciamento da infra-estrutura conforme sua aplicação cresce.

Rails 2.2 introduziu conditional GET através do uso de cabeçalhos http: last_modified e etag. Seguindo a seção de caching padrão da internet da RFC2616, Ryan Tomayko introduziu Rack::Cache.

Rack::Cache é uma peça do Rack middleware que implementa a maioria das funcionalidades da caching da RFC 2616 com um conjunto básico de opções de storage (disk, heap, e memcached) e um sistema de configuração para ajuste do cache. Isto deverá funcionar igualmente bem com qualquer framework web Ruby habilitado para Rack e é testado em Ruby 1.8.6 e 1.8.7.

Parte do seu design foi inspirado pelo framework de cache do Django's (escrito em Python).

Rack::Cache age como um gateway proxy (Varnish , Squid) sem a dor de cabeça de configuração. O Rack::Cache supporta cache baseado em expiração, modelo de validação, e campos de cabelçalho do tipo Vary.

Como Ryan King afirma, você pode migrar suavemente para o gateway proxy de verdade se sua aplicação realmente precisar disso:

Uma vez que sua aplicação fica maior e mais complexa, faz sentido usar um cache de proxy http reverso como squid ou varnish, mas a transição do estilo de caching do rails para HTTP caching é não-trivial. Você tem que alterar seu deployment e sua aplicação de maneiras significativas. Não é divertido.

Com Rack::Cache você só tem que alterar seu deployment. Você pode fazer isso até mesmo de forma incremental. Você poderia começar usando Rack::Cache para cache no heap, depois mudar para o sistema de arquivos e finalmente para memcache. Quando isso atingir o limite de escalabilidade você pode adicionar o squid ou varnhish na fremte de sua aplicação e então remover Rack::Cache. Deployments que envolvem só uma alteração importante em cada passo são muito mais fáceis de acertar do que tentar várias mudanças maiores em uma única operação.

Será interessante dar uma olhada nos próximos benchmarks do Ryan.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT