强制将单个背景图像强制为*NOT*缓存

Sco*_*ttG 2 asp.net iis-7 http iis-7.5 http-headers

我的网站上有一个使用背景图片的div标签.当我们在该图像中进行微小的文本更改并将其ftp返回到服务器时,它将继续将其作为未修改的304并使用缓存版本.只有在我们强制浏览器刷新之前,它才会获取新图像.

我已经阅读了在HTTP响应标头中我可以将Cache-Control设置为无缓存的地方(我正在使用IIS 7.5),但仍然无效,仍然使用缓存的图像并发送回304.我的解决方法是重命名图像,并更改div的CSS,这确实有效,但我正在寻找一个更好的方法.理想情况下,我们希望这个单个图像是动态的,因此我们可以经常更改它,但我们不希望客户必须知道刷新他们的浏览器.

有解决方案吗?

Joh*_*y_D 5

更改网址是最常见的解决方法.在我的情况下,当我遇到这样的问题时,我已经将图像移动到单独的控制器中(或者它可能是页面,甚至是hadler),并且正在添加由datetime类生成的小url param ,例如:

http:\\mysite.com\myimage\dynamic.jpg?bla=20121119184001
Run Code Online (Sandbox Code Playgroud)

  • 为了更进一步,如果你想要可靠地做到这一点,你应该将文件的`lastmodified`时间附加到url以检索它 - 例如`background.jpg?date = 20121119144300`这样,每次更新时文件,检索它的URL将更改,强制新的缓存条目 - 但如果你还没有修改它,你仍然可以获得缓存的好处 (3认同)