fundo
Estou escrevendo e usando uma ferramenta muito simples de gerenciamento de conteúdo baseada em CGI (Perl) para dois sites gratuitos. Ele fornece ao administrador do site formulários HTML para eventos nos quais eles preenchem os campos (data, local, título, descrição, links, etc.) e os salvam. Nesse formulário, permito que o administrador envie uma imagem relacionada ao evento. Na página HTML que exibe o formulário, também estou mostrando uma visualização da imagem carregada (tag img HTML).
O problema
O problema ocorre quando o administrador deseja alterar a imagem. Ele apenas precisaria clicar no botão "navegar", escolher uma nova foto e pressionar ok. E isso funciona bem.
Depois que a imagem é carregada, meu CGI de back-end lida com o upload e recarrega o formulário corretamente.
O problema é que a imagem mostrada não é atualizada. A imagem antiga ainda é mostrada, mesmo que o banco de dados mantenha a imagem correta. Eu reduzi ao fato de que a IMAGEM É CACHE no navegador da web. Se o administrador pressionar o botão RELOAD no Firefox / Explorer / Safari, tudo será atualizado corretamente e a nova imagem aparecerá.
Minha solução - Não está funcionando
Estou tentando controlar o cache, escrevendo uma instrução HTTP Expires com uma data muito distante no passado.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Lembre-se de que eu sou do lado administrativo e realmente não me importo se as páginas demorarem um pouco mais para carregar, porque sempre expiram.
Mas isso também não funciona.
Notas
Ao fazer upload de uma imagem, seu nome de arquivo não é mantido no banco de dados. Ele é renomeado como Image.jpg (para simplificar as coisas ao usá-lo). Ao substituir a imagem existente por uma nova, o nome também não muda. Apenas o conteúdo do arquivo de imagem é alterado.
O servidor da web é fornecido pelo serviço de hospedagem / ISP. Ele usa o Apache.
Questão
Existe uma maneira de forçar o navegador da Web a NÃO armazenar em cache coisas desta página, nem mesmo imagens?
Estou manipulando a opção de realmente "salvar o nome do arquivo" no banco de dados. Dessa forma, se a imagem for alterada, o src da tag IMG também será alterado. No entanto, isso requer muitas alterações em todo o site e prefiro não fazê-lo se tiver uma solução melhor. Além disso, isso ainda não funcionará se a nova imagem carregada tiver o mesmo nome (digamos que a imagem tenha sido photoshopada um pouco e carregada novamente).