从mvc中的浏览器缓存中清除一个对象

本文关键字:清除 一个对象 缓存 mvc 浏览器 | 更新日期: 2023-09-27 18:15:01

我有一个MVC应用程序在c#。我有一个包含许多图像的页面。一旦页面被加载,那么所有的图像都被存储在浏览器的缓存中。但是当我改变图像时,它确实取代了旧的图像。由于新旧图像具有相同的名称,并且图像是从浏览器的缓存中获取的。但是,如果我用Ctrl+F5刷新页面,它就会呈现新图像。有没有办法让我只能从浏览器的缓存中删除旧图像?我不能删除浏览器的所有缓存,因为它包含许多应该缓存的图像。只需要删除缓存中正在更改的图像。


非常感谢您的所有回复。这里有几点我要提一下:1. 我不能使用查询字符串,因为单页包含许多部分与不同的图像和特定的图像呈现在不同的部分。2. 我不能添加新的guid或日期时间与图像的url,因为如果我这样做,那么每次每当页面被刷新一个新的服务器调用将发生,图像将来自服务器和页面渲染相同的图像在许多地方。

因此,为了减少服务器调用并使性能更快,我必须从浏览器缓存中仅删除该图像。

从mvc中的浏览器缓存中清除一个对象

图像是否具有唯一的值,如版本或已创建的日期时间?如果是这样,您可以将其添加到文件名或作为查询字符串。浏览器将缓存图像,但QueryString中的新值将请求新图像。

实现此目的的一种方法是在图像URL上附加一个查询字符串,该字符串在图像更改时更改。一个非常简单的例子是:

'image.jpg?' + new Date().getTime()

它会给我一个这样的URL:

"image.jpg?1321626971855"

现在,您可以在JavaScript中更智能地通过仅在图像更改时更改时间戳(或添加时间戳)。

不可能没有一大堆麻烦,相信我,你真的只需要按ctrl+f5;)

如果您保存一个新图像,例如为用户保存一个新的配置文件图像,您可以使用guide . newguid()作为文件名(或文件名的一部分),以确保在浏览器中重新加载的图像是唯一的。