背景
我正在为两个无偿网站编写和使用一个非常简单的基于CGI(Perl)的内容管理工具。它为网站管理员提供用于填充字段(日期,地点,标题,描述,链接等)并保存的事件的HTML表单。在该表单上,我允许管理员上传与活动相关的图片。在显示表单的HTML页面上,我还显示了上传的图片(HTML img标签)的预览。
问题
当管理员要更改图片时,会出现此问题。他只需要打“浏览”按钮,选择一个新的图片,然后按确定。这工作正常。
一旦图像上传,我的后端CGI处理上传并正确地重新加载表单。
问题是显示的图像不刷新。即使数据库保存了正确的图像,仍会显示旧的图像。我已经把它缩小到在网络浏览器中的图像被缓存的事实。如果管理员点击Firefox / Explorer / Safari中的RELOAD按钮,所有内容都会被刷新,新的图像就会出现。
我的解决方案 – 不工作
我试图控制缓存通过写一个HTTP Expires指令的日期非常远的过去。
Expires: Mon, 15 Sep 2003 1:00:00 GMT
记住,我在行政方面,我不在乎,如果这些页面需要更长的时间加载,因为它们总是过期。
但是,这也不工作。
笔记
上传图像时,其文件名不保存在数据库中。它被重命名为Image.jpg(简单地说,当使用它时)。当使用新图像替换现有图像时,名称也不会更改。只是图像文件的内容更改。
网络服务器由主机服务/ ISP提供。它使用Apache。
题
有没有办法强制Web浏览器不缓存的东西从这个网页,甚至图像?
我正在玩的选项实际上“保存文件名”与数据库。这样,如果图像改变,IMG标签的src也将改变。然而,这需要在整个网站的很多变化,我宁愿不这样做,如果我有一个更好的解决方案。此外,如果上传的新图片具有相同的名称(例如,图片被photoshop了一点并重新上传),这仍然不会工作。