C# 从浏览器中清除对象';mvc中的缓存

C# 从浏览器中清除对象';mvc中的缓存,c#,asp.net-mvc,C#,Asp.net Mvc,我在c#中有一个MVC应用程序。我有一个页面,其中包含大量的图像。加载页面后,所有图像都将存储在浏览器的缓存中。但是当我更改图像时,它确实会替换旧图像。因为旧图像和新图像具有相同的名称,并且图像是从浏览器的缓存中获取的。但是,如果我使用Ctrl+F5刷新页面,它将呈现新图像。有什么方法可以让我只从浏览器的缓存中删除旧图像吗?我无法删除浏览器的所有缓存,因为它包含许多应该缓存的图像。仅从正在更改的缓存中删除图像 非常感谢您的回复。这里有几点我应该提一下: 1.我不能使用查询字符串,因为单个页面包

我在c#中有一个MVC应用程序。我有一个页面,其中包含大量的图像。加载页面后,所有图像都将存储在浏览器的缓存中。但是当我更改图像时,它确实会替换旧图像。因为旧图像和新图像具有相同的名称,并且图像是从浏览器的缓存中获取的。但是,如果我使用Ctrl+F5刷新页面,它将呈现新图像。有什么方法可以让我只从浏览器的缓存中删除旧图像吗?我无法删除浏览器的所有缓存,因为它包含许多应该缓存的图像。仅从正在更改的缓存中删除图像



非常感谢您的回复。这里有几点我应该提一下: 1.我不能使用查询字符串,因为单个页面包含许多具有不同图像的部分,并且特定图像在不同部分中呈现。 2.我无法将新的guid或datetime与图像的url一起添加,因为如果我这样做,则每当刷新页面时,都会发生新的服务器调用,图像将来自服务器,并且该页面在许多地方呈现相同的图像


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

如果不经历很多麻烦,这是不可能的,相信我,你真的只想在这里按ctrl+f5;)

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

如果保存新图像,例如用户的新配置文件图像,则可以使用Guid.NewGuid()作为文件名(或部分文件名)为了保证在浏览器中重新加载唯一的图像。

实现这一点的一种方法是在图像URL上附加一个查询字符串,该字符串在图像更改时更改。一个简单的应用程序正在使用:

'image.jpg?' + new Date().getTime()
这会给我一个如下的URL:

"image.jpg?1321626971855"

现在,您可以在JavaScript中更智能地实现这一点,只需在图像更改时更改时间戳(或添加时间戳)。

我认为@Cymen建议的解决方案可能是实现这一点的最快方法。长期来看,您可能希望熟悉HTTP缓存以及如何配置web服务器以为每种类型的文件提供正确的缓存信息:这是一个很好的解决方案,但我认为您需要提到的是,您的简单示例永远不会缓存图像。我不想让答案复杂化。我假设URL是通过JavaScript更改的,因此建议只更改已更改图像的URL。它有点特定于实现。这是一个很好的观点,作为评论非常好!非常感谢您的回复。这里有几点我应该提一下: