我实施了一个系统来编辑网站上显示的图像。
编辑图像时,我想在网站的所有页面(称为图像)上显示其最新版本,至少对于编辑图像的用户而言。
现在我正在寻找一种更好的方法来清除特定图像的缓存,而不是在最后添加时间戳:
<img src="myimage.jpg?01215654" alt="" />
为什么?
它假设总是在图像路径的末尾添加时间戳,例如使用会话系统。
但是当会话到期时(例如,用户离开网站,并在几小时后返回),将显示图像的真实路径:
<img src="myimage.jpg" alt="" />
导航器随机显示旧图像或最后一个版本......因为Apache缓存了:
限制
我想要什么
我想说“myimage.jpg”的缓存已过期,因此显示最后一个版本,然后正常缓存,直到下一版。所以我想在编辑后加载图像为“200 status”,而不是“304 modified”。
注意:编辑图像时,我用隐藏的div中的JS(JQuery)重新加载它,如果你现在有办法更改缓存标题?
所以我想要的是清除编辑的特定图像的缓存头,考虑到我的项目的限制,所以如果可能的话,通过使用缓存指令而不从控制器提供图像,是否可能?< / p>
答案 0 :(得分:0)
整个问题非常困惑。
Apache缓存? ...不,缓存在浏览器中,而不在Apache中。
为图像网址添加时间戳的会话? ...不,必须使用服务器端脚本(例如PHP)将带有时间戳的查询字符串添加到HTML中。它与浏览器会话无关。 (实际上,使用文件最后修改时间而不是当前时间戳BTW通常要好得多。
有多种方法可以达到您想要的效果,每种方法都有其自身的优点和缺点,具体取决于您的情况。您可能希望阅读我的回答here。