Catalyst :: Plugin :: cache :: http

HTTP / 1.1 validadores de cache para catalisador
Baixe Agora

Catalyst :: Plugin :: cache :: http Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Bernhard Graf
  • Site do editor:
  • http://search.cpan.org/~graf/

Catalyst :: Plugin :: cache :: http Tag


Catalyst :: Plugin :: cache :: http Descrição

HTTP / 1.1 validadores cache para Catalisador Desde que a humanidade se desenvolve sites, tem que lidar com os problemas que surgem quando um site se torna popular. Isto é especialmente verdadeiro para conteúdos dinâmicos. Otimizações do próprio aplicativo web são normalmente seguidas por aprimorando a configuração do sistema, melhor hardware, conectividade melhorada, agrupamento e balanceamento de carga. Bom se os rendimentos do site lucro suficiente para financiar tudo isso (e as pessoas que são necessários) .Há também inúmeros módulos no CPAN e dicas úteis em todo o World Wide Web sobre como estalar o chicote no Catalisador applications.Noticeably muitas vezes é negligenciado, que mais de uma década atrás, os "pais" da WWW criaram conceitos em HTTP / 1.1 para reduzir o tráfego entre o servidor web eo cliente web (e procuração quando aplicável). Todos os navegadores comuns apoiar estes conceitos por muitos anos now.These conceitos podem acelerar uma aplicação web e economizar recursos, ao mesmo time.How isso é possível? Você pode olhar para o conceito em RFC 2616 seção 13.3, além da implementação nas seções 14,19, 14,24, 14,25, 14,28, 14,26 e 14,44. Para cortar uma longa história curta: Este plugin não gere qualquer cache sobre os dados do servidor e evita a transmissão de onde possible.To utilizar este conceito na sua aplicação baseada Catalisador algumas bastante pequenas adições têm de ser feitas no código: 1. Use o plugin Este é fácil: Na classe de aplicações (muitas vezes referida como MyApp.pm) basta adicionar Cache :: HTTP para a lista de plugins após o uso Catalyst.2. Adicionar cabeçalhos de resposta adequadas Esses cabeçalhos são Last-Modified e ETag. O método cabeçalhos do Catalyst :: Response que realmente nos fornece uma instância de HTTP :: cabeçalhos nos dá dois acessores úteis para estas linhas de cabeçalho: last_modified e etag. 2.1 $ c-> resposta-> headers-> last_modified ($ unix_timestamp) Se esta existe em uma resposta para um recurso solicitado, em seguida, para a próxima solicitação para o mesmo recurso um navegador moderno irá adicionar uma linha para os cabeçalhos de solicitação para verificar se os dados de recursos mudou desde a data da última modificação, que foi dado com a última resposta. Se o servidor responde com um código de status 304 e um corpo vazio, o navegador leva os dados para este recurso de seu cache local. 2.2 $ c-> resposta-> headers-> etag ($ entity_tag) A tag entidade é uma representação única de dados de um recurso. Normalmente, uma digerir do corpo da resposta serve bem para esta finalidade, de modo que para esse caso, sempre que você ler "ETag" que você pode substituí-lo por "verificação". Se um Etag existe uma resposta para um recurso solicitado, em seguida, para a próxima solicitação para o mesmo recurso o navegador irá adicionar uma linha para os cabeçalhos de solicitação com que ETag, que informa o servidor para apenas transmitem o corpo se o ETag para o recurso mudou. Se ele não tem as responde de servidor com um código de status 304 e um corpo vazio, e o navegador leva os dados para este recurso de seu local de MyApp pacote cache.SYNOPSISLoad Plugin Into Application; uso Catalisador qw (Cache :: HTTP); Criar um Last-Modified cabeçalho pacote MyApp :: Controller :: Foo; sub bar: local {my ($ self, $ c) = @_; meus $ data = $ c-> modelo ( 'MyApp :: Model') -> fetch_data; my $ mtime = $ data-> mod_time; ... $ c-> resposta-> headers-> last_modified ($ mtime); ...} Criação automática de ETag pacote MyApp :: View :: TT; 'Catalisador :: View :: TT' uso base; usar MRO :: Compat; usar Digest :: MD5 'md5_hex'; sub processo {my $ self = shift; my $ c = $ _ ; $ Self-> próxima :: method (@_) ou retornar 0; my $ method = $ c-> request-> método; retornar 1 se $ método ne 'GET' e $ method ne 'cabeça' ou US $ c-> esconderijo -> {nocache}; # Desabilitar o cache explicitamente my $ body = $ c-> resposta-> corpo; if ($ corpo) {utf8 :: encode ($ corpo) se utf8 :: is_utf8 ($ corpo); $ C-> resposta-> headers-> etag (md5_hex ($ corpo)); } Retornar 1; } Requisitos: · Perl.


Catalyst :: Plugin :: cache :: http Software Relacionado