Background
我正在为两个公益网站编写并使用一个非常简单的基于CGI的(Perl)内容管理工具。它为网站管理员提供了事件的HTML表单,他们填写字段(日期、地点、标题、描述、链接等)并保存。在该表单上,我允许管理员上传与事件相关的图像。在显示表单的HTML页面上,我还显示了上传图片的预览(HTML img标记)。
The Problem
当管理员想要更改图片时,就会出现此问题。他只需要点击“浏览”按钮,选择一张新照片,然后按“确定”。这很好。
一旦上传了图像,我的后端CGI就会处理上传并正确地重新加载表单。
问题是显示的图像无法刷新。尽管数据库中有正确的图像,但旧图像仍然显示。我已经把它缩小到图像被缓存在网络浏览器中的事实。如果管理员在Firefox/Explorer/Safari中点击RELOAD按钮,所有内容都会被刷新,新图像就会出现。
My Solution - Not Working
我正试图通过编写一条日期在很久以前的HTTPExpires指令来控制缓存。
Expires: Mon, 15 Sep 2003 1:00:00 GMT
请记住,我是管理人员,我真的不在乎页面加载是否需要更长的时间,因为它们总是过期的。
但是,这也不起作用。
Notes
上传图像时,其文件名不会保存在数据库中。它被重命名为Image.jpg(在使用时简单地说明一下)。将现有图像替换为新图像时,名称也不会更改。只是图像文件的内容发生了更改。
网络服务器由托管服务/ISP提供。它使用Apache。
Question
有没有办法强制网络浏览器不缓存这个页面上的内容,甚至不缓存图像?
我正在处理与数据库一起实际“保存文件名”的选项。这样,如果图像发生更改,IMG标签的src也会发生更改。然而,这需要在整个网站上做很多更改,如果我有更好的解决方案,我宁愿不这样做。此外,如果上传的新图像具有相同的名称(比如图像经过PS处理后重新上传),这仍然不起作用。