背景
我正在为两个公益网站编写和使用一个非常简单的基于CGI的(Perl)内容管理工具。它为网站管理员提供事件的HTML表单,这些表单将填写字段(日期,位置,标题,描述,链接等)并保存。在该表格上,我允许管理员上传与事件相关的图像。在显示表单的HTML页面上,我还显示了上载图片的预览(HTML img标签)。
问题
当管理员想要更改图片时,会发生此问题。他只需要点击“浏览”按钮,选择一张新照片,然后按OK。这很好。
上载图像后,我的后端CGI将处理上载并正确地重新加载表单。
问题是显示的图像没有刷新。即使数据库保存了正确的图像,仍会显示旧图像。我将其范围缩小为在网络浏览器中缓存了图像。如果管理员点击Firefox / Explorer / Safari中的RELOAD按钮,则一切都会刷新,并且会出现新图像。
我的解决方案-不起作用
我试图通过写一个HTTP Expires指令来控制缓存,该指令的日期已经过去了。
Expires: Mon, 15 Sep 2003 1:00:00 GMT
请记住,我在管理方面,我并不在乎页面是否需要花费更长的时间加载,因为它们总是过期的。
但是,这也不起作用。
笔记
上载图像时,其文件名不保留在数据库中。它被重命名为Image.jpg(以简化使用时的处理)。用新图像替换现有图像时,名称也不会更改。只是图像文件的内容会更改。
Web服务器由托管服务/ ISP提供。它使用Apache。
题
有没有一种方法可以强制Web浏览器不缓存该页面中的内容,甚至不缓存图像?
我正在尝试使用数据库来实际“保存文件名”的选项。这样,如果更改了图像,IMG标签的src也将更改。但是,这需要对整个站点进行很多更改,如果我有更好的解决方案,我宁愿不进行更改。另外,如果上传的新图像具有相同的名称,这仍然将不起作用(例如,将图像进行了照片购物并重新上传)。