Qual é o objetivo?
Já existe uma técnica bem estabelecida chamada cache do lado do cliente. O que o armazenamento local HTML5 traz nesse caso, que falta ao cache?
Você pode ter algum tipo de aplicativo estranho que deve carregar blocos de código JavaScript dinamicamente, para não poder usar efetivamente o cache, mas é um caso extremamente raro.
Além disso, esteja ciente de outra coisa. Os navegadores têm políticas específicas para cache, e a maioria dos navegadores é muito boa em gerenciar bem o cache (removendo apenas o conteúdo antigo etc.). Ao implementar seu cache caseiro, você evita que os navegadores o gerenciem corretamente. Não apenas pode ser criticado por si próprio, mas também o machucará mais cedo ou mais tarde. Exemplo: quando os usuários de um aplicativo Web estão relatando erros, geralmente você responde solicitando que limpem o cache. Não tenho certeza do que você perguntará no seu caso, pois a limpeza do cache nunca resolverá problemas com seu aplicativo Web.
Em resposta à sua primeira edição (sua segunda edição está fora do tópico):
Estou ciente do cache do navegador, ainda haverá alguma verificação de acesso ao cabeçalho
Parece que você não conhece o cache do navegador. É por isso que é essencial entender como funciona primeiro, antes de começar a implementar seu próprio mecanismo de cache caseiro . Reinvente sua própria roda somente quando você entender o suficiente as rodas existentes e tiver um bom motivo para não usá-las. Veja o ponto 1 da minha resposta à pergunta "Reinventando a roda e NÃO lamentando" .
Ao fornecer alguns dados por HTTP, você pode especificar alguns cabeçalhos relacionados ao cache:
Last-Modified
especifica quando o conteúdo foi alterado,
Expires
especifica quando o navegador deve perguntar ao servidor se o conteúdo foi alterado .
Esses dois cabeçalhos permitem que o navegador:
- Evite baixar o conteúdo repetidamente. Se
Last-Modified
estiver definido para o último mês e o conteúdo já tiver sido baixado hoje algumas horas antes, não será necessário fazer o download novamente.
- Evite consultar a data em que o arquivo foi modificado pela última vez. Se
Expires
de uma entidade cache é 05 de maio th , 2014, você não tem que emitir qualquer pedido GET nem em 2011, nem em 2012 ou 2013, desde que você sabe que o cache é up-to-date.
O segundo é essencial para as CDNs. Quando o Google exibe o JQuery para um visitante do Stack Overflow ou cdn.sstatic.net
exibe imagens ou folhas de estilo usadas pelo Stack Overflow, ele não deseja que os navegadores consultem sempre uma nova versão. Em vez disso, eles estão servindo esses arquivos uma vez, defina a data de validade para algo por tempo suficiente, e isso é tudo.
Aqui está, por exemplo, uma captura de tela do que está acontecendo quando chego à página inicial do Stack Overflow:
Existem 15 arquivos para servir. Mas onde estão todas essas 304 Not Modified
respostas? Você tem apenas três solicitações de conteúdo que foram alteradas. Para todo o resto, o navegador usa a versão em cache sem fazer nenhuma solicitação a nenhum servidor .
Para concluir, você realmente precisa pensar duas vezes antes de implementar seu próprio mecanismo de cache e, principalmente, encontrar um bom cenário em que isso possa ser útil . Como eu disse no começo da minha resposta, posso encontrar apenas uma: onde você está servindo pedaços de JavaScript para usá-los através do OMG eval()
. Mas, neste caso, tenho certeza de que existem abordagens melhores que são:
- Mais eficaz usando as técnicas de cache padrão ou
- Mais fácil de manter.