我在c#中有一个MVC应用程序。我有一个包含图像数量的页面。加载页面后,所有图像都存储在浏览器的缓存中。但是当我改变图像时,它确实取代了旧图像。由于旧图像和新图像具有相同的名称,因此从浏览器的缓存中获取图像。但是,如果我使用Ctrl + F5刷新页面,则会呈现新图像。有没有办法让我只能从浏览器的缓存中删除那个旧图像?我无法删除浏览器的所有缓存,因为它包含许多应缓存的图像。只应从正在更改的缓存中删除该图像。
非常感谢您的所有回复。我应该在这里提一下: 1.我不能使用查询字符串,因为该单个页面包含许多具有不同图像的部分,并且该特定图像在不同部分中呈现。 2.我无法使用图片的网址添加新的guid或日期时间,因为如果我这样做,那么每次刷新页面时都会发生新的服务器调用,图像将来自服务器,并且该页面会渲染相同的图像地方。
因此,为了减少服务器调用并提高性能,我必须从浏览器缓存中仅删除该图像。
答案 0 :(得分:2)
图像是否具有类似版本或创建日期时间的唯一值?如果是这样,您可以将其添加到文件名或作为查询字符串。浏览器会缓存图像,但QueryString中的新值会请求新图像。
答案 1 :(得分:1)
实现此目的的一种方法是在图像URL上附加一个查询字符串,该字符串在图像更改时发生更改。一个简单易懂的人正在使用:
'image.jpg?' + new Date().getTime()
这会给我一个这样的网址:
"image.jpg?1321626971855"
现在,只需在更改图像时更改时间戳(或添加时间戳),就可以在JavaScript中更智能地使用它。
答案 2 :(得分:0)
不可能没有遇到很多麻烦,相信我,你真的只想在这里点击ctrl + f5;)
答案 3 :(得分:0)
如果你保存一个新图像,例如为用户说一个新的个人资料图像,你可以使用Guid.NewGuid()作为文件名(或文件名的一部分),以保证一个独特的图像,将在浏览器中重新加载。