galera,
na minha app web tem uma tabela onde cada linha é o nome/link de uma imagem (armazenada no banco, byte[]). O usuário pode clicar em um registro da tabela e então uma modal surge e exibe a respectiva imagem.
No Mozilla e no IE tenho o seguinte problema: a primeira imagem clicada não sai do cache, ou seja, mesmo q o usuario clique em outras linhas da tabela, a modal fica sempre mostrando a primeira imagem q foi clicada.
No Chrome não tenho esse problema.
A imagem é buscada no banco e renderizada a partir de uma servlet. Segue o trecho em q especifico o http-header:
resp.setHeader("Content-Type", getServletContext().getMimeType(nomeImagem));
resp.setHeader("Content-Length", String.valueOf(loginMB.getTamanhoImagem()));
resp.setHeader("Content-Disposition", "inline; filename=\"+nomeImagem+"\");
resp.setHeader("Cache-Control", "no-store");
não sei q como resolver esse problema :x
valeu pela dica, lele_vader,
mas não surtiu efeito
Como esta sendo montada a url dessa imagem ???
se for sempre algo como http://www.site.com.br/sistema/imagem, não vai ter muito jeito pois em algum lugar ela vai ficar no cache… seja browser de alguma versão… seja proxy! Pois acha-se que é um conteudo estatico igual!
Inclusive com javascript pode-se ter o mesmo problema.
O ideal é montar a url com algum id da imagem por exemplo http://www.site.com.br/sistema/imagem?id=1111
Nesse caso se o problema estiver sendo de troca de imagem e continua aparecendo a imagem velha, então tem de mudar o id (ter um id unico).
Outra forma seria acrescentar um parâmetro a mais, tipo o System.currentTimeMilis… http://www.site.com.br/sistema/imagem?id=1111&time=3249872389423784
Mas nesse caso a imagem seria carregada sempre… não faria cache nunca (o que também pode ser ruim)
valeu, jmmenezes !!, sua dica resolveu
eu chamava a servlet pelo componente <h:graphicImage> do JSF da seguinte forma:
<h:graphicImage value="/servlet_imagem/nome=#{loginMB.nomeImagem}&tipoview=1" />
então inseri mais um parametro id, vinculado ao managed bean, q gera um numero aleatório de 0 a 1000. Não uso pra nada esse id, mas parece que isso indica ao browser q são conteúdos distintos, e assim ele vai “saber” diferenciá-los
meu código agora ficou assim:
<h:graphicImage value="/servlet_imagem/id=#{loginMB.gerarId}&nome=#{loginMB.nomeImagem}&tipoview=1" />
obrigado pela ajuda, já estava há varias horas tentando resolver isso !!
isso mostra q de fato o Chrome é um navegador mais inteligente 