Evitar cache de browser
31/08/2012 23:40
0
Olá pessoal,

Tive que atualizar uma aplicação, principalmente a parte visual (css e js), e tive um grande problema com cache.
No chrome por exemplo, em um outro computador, tive que dar uns 3 ctrl+f5 para que o cache da págine fosse limpo. O problema é que clientes nao sabem que o problema eh por causa do cache entao acaba gerando suporte.
Enfim, alguem sabe de alguma forma eficiente para que, quando minha aplicação for atualizada, o cache do browser seja desconsiderado ou limpo?

Na minha aplicação utilizo o plugin resources (Link). Encontrei uma solução de adicionar um parâmetro apos o link do css ou do javascript (ex: link/css?v=2) mas minha aplicação tem muitos css's e muitos js e axei esta solução um pouco inviável.

Agradeço pela ajuda,

[ ]'s
Tags: cache, css, js, browser


0
Já que você usa o Resources, pode usar também o Cached Resources que gera um arquivo com um nome maluco de acordo com o conteúdo do arquivo, então mudou o arquivo, mudou o nome do arquivo evitando o cache.

http://grails.org/plugin/cached-resources
01/09/2012 02:24


0
Olá.

amigo, antes de te sugerir uma forma simples de prevenir esses "caches", algumas questões:

Realmente quer isso? O recurso de cache de imagens/js/css favorece imensamente a melhora de desempenho de sua aplicação.

Se seu cliente está vendo versões defasadas isso é um problema, mas... seus JS/CSS são atualizados tanto assim? A cada 15 minutos eles são alterados?

Eu penso que melhor do que impedir o cache por completo e comprometer o desempenho, seria definir um cache com tempo determinado. Você pode informar ao navegador que determinado recurso tem um certo tempo pra ficar no cache. Se, por exemplo, você atualiza seus JS/CSS todo dia (o que já penso ser muito), então configure-os para ter um cache de cerca de 12 horas por exemplo.

Bem, mas de você realmente que acabar com o cache, uma solução simples é fazer como você mesmo já escreveu mas um pouco mais "automático". Ora, imagino que você use 1 ou mais "templates GSP" em seu projeto, certo? Se sim, basta fazer isso que te sugiro neles.
Em suas tags <script> e <link>, quando for indicar onde está o ".js" ou ".css", faça:
meu_script.js?${new Date().time}
meucss.css?${new Date().time}


Assim terá certeza de que o cache será ignorado pelos navegadores.


1
rcauler, valeu pela dica. O plugin que vc sugeriu realmente parece ser muito bom.

E José Yoshiriro, valeu pela dica tbm, mas eu entendo que o cache do browser ajuda bastante em questoes de desempenho da minha aplicação. O problema é que tive que atualizar um site (praticamente todo o layout do site foi alterado) e quando subi o 'novo' site em produção tive o problema com o cache. O site ficou todo baguncado até que o cache fosse limpo.

O que eu preciso mesmo é apenas informar o browser 1 vez, quando minha aplicação for atualizada, que os recursos do site devem ser atualizados pelo browser.

A sujestao do rcauler acima parece boa, pois o plugin cached-resources altera o nome do arquivo js/css quando seu conteudo for alterado.

Uma outra solução que encontrei, e me pareceu bem simples, é alterar a versao da minha aplicação no application.properties (vi isto em um post do kiko aqui: http://www.itexto.net/devkico/?p=763).

Eu não sabia que a versao da aplicação, definida no application.properties, era considerada pelo broser. Muito legal :)

[ ]'s
02/09/2012 16:57


0
Só pra esclarecer.

O browser NÃO leva em consideração a versão da aplicação.

O que o Kiko fez foi automatizar uma mudança na URL do CSS pra evitar o cache usando a versão da aplicação como parâmetro.
02/09/2012 17:51


0
Ah sim, eh verdade. Me equivoquei quando li o post.
Vlw
02/09/2012 17:59


0
Bom dia!
  Sei que o post é antigo, mas estou procurando alguma solução para evitar o cache do navegador. Gostei da solução apresentada pelo Kiko e compartilhada pelo VRCarvalho.
  Uso o bundles tanto para arquivos CSS, quanto JavaScript. Como poderia fazer para incluir a versão nos nomes dos arquivos como mostra o texto do Kiko, ou outra solução para evitar cache?
  Existe alguma forma de apagar o cache? Por exemplo, quando se entra no InternetBank ao fazer o logout, se tentar voltar com o botão do navegador, não consegue voltar. Como faço isso?

  Desculpe, sou novo no grails e em desenvolvimento Web. Trabalhei durante anos com desenvolvimento desktop e estou há dias procurando um jeito de resolver isso!

Obrigado
26/07/2015 07:11



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto