Asp.net mvc 在ASP.NETMVC中动态缓存图像

Asp.net mvc 在ASP.NETMVC中动态缓存图像,asp.net-mvc,caching,last-modified,Asp.net Mvc,Caching,Last Modified,我正在开发一种带有重图片的登录页。 我已经在web.config中使用以下代码在客户端缓存了图像 <staticContent> <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires"/> </staticContent> 有时,用户正在裁剪或重新调整其图像的大小,但浏览器仍显示缓存的图像。 有没有办法,我可以强制告诉你们,服务器上的

我正在开发一种带有重图片的登录页。 我已经在web.config中使用以下代码在客户端缓存了图像

<staticContent>
  <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires"/>
</staticContent>

有时,用户正在裁剪或重新调整其图像的大小,但浏览器仍显示缓存的图像。 有没有办法,我可以强制告诉你们,服务器上的图像已经更改,所有浏览器都应该刷新缓存


我想我需要使用LastModified HTTP头,但我不知道如何在ASP.NET MVC中将此头设置为静态映像。客户端缓存的全部目的是在定义的时间段内不再检查新版本。从这个意义上说,添加上次修改的头对您没有帮助,因为浏览器不会请求文件获取该头。通常,处理静态资源的方法是设置一个遥远的未来过期时间,这样资源将几乎无限期地缓存在客户端,然后在出现新版本时以某种方式更改资源名称。如果资源的名称更改,那么浏览器将自动再次获取该名称,因为它没有具有该名称的资源

我不知道你的用户是怎么做的,但是如果你正在裁剪或调整图片的大小,通常会同时给图片起一个新名字。例如,原稿可能是
original.jpg
,200x200作物可能是
original\u 200x200.jpg
,等等


除此之外,您还可以使用缓存破坏查询字符串强制浏览器重新请求资源。简单地做一些事情,比如将最后修改的日期附加为时间戳,通常是非常有效的。例如,不是将图像引用为
image.jpg
,而是将其引用为
image.jpg?1416417459
。一旦图像被修改,时间戳就会不同,浏览器会将其视为一个全新的资源。

客户端缓存的全部目的是在某个定义的时间段内不再检查新版本。从这个意义上说,添加上次修改的头对您没有帮助,因为浏览器不会请求文件获取该头。通常,处理静态资源的方法是设置一个遥远的未来过期时间,这样资源将几乎无限期地缓存在客户端,然后在出现新版本时以某种方式更改资源名称。如果资源的名称更改,那么浏览器将自动再次获取该名称,因为它没有具有该名称的资源

我不知道你的用户是怎么做的,但是如果你正在裁剪或调整图片的大小,通常会同时给图片起一个新名字。例如,原稿可能是
original.jpg
,200x200作物可能是
original\u 200x200.jpg
,等等


除此之外,您还可以使用缓存破坏查询字符串强制浏览器重新请求资源。简单地做一些事情,比如将最后修改的日期附加为时间戳,通常是非常有效的。例如,不是将图像引用为
image.jpg
,而是将其引用为
image.jpg?1416417459
。一旦图像被修改,时间戳就会不同,浏览器会将其视为一个全新的资源。

客户端缓存的全部目的是在某个定义的时间段内不再检查新版本。从这个意义上说,添加上次修改的头对您没有帮助,因为浏览器不会请求文件获取该头。通常,处理静态资源的方法是设置一个遥远的未来过期时间,这样资源将几乎无限期地缓存在客户端,然后在出现新版本时以某种方式更改资源名称。如果资源的名称更改,那么浏览器将自动再次获取该名称,因为它没有具有该名称的资源

我不知道你的用户是怎么做的,但是如果你正在裁剪或调整图片的大小,通常会同时给图片起一个新名字。例如,原稿可能是
original.jpg
,200x200作物可能是
original\u 200x200.jpg
,等等


除此之外,您还可以使用缓存破坏查询字符串强制浏览器重新请求资源。简单地做一些事情,比如将最后修改的日期附加为时间戳,通常是非常有效的。例如,不是将图像引用为
image.jpg
,而是将其引用为
image.jpg?1416417459
。一旦图像被修改,时间戳就会不同,浏览器会将其视为一个全新的资源。

客户端缓存的全部目的是在某个定义的时间段内不再检查新版本。从这个意义上说,添加上次修改的头对您没有帮助,因为浏览器不会请求文件获取该头。通常,处理静态资源的方法是设置一个遥远的未来过期时间,这样资源将几乎无限期地缓存在客户端,然后在出现新版本时以某种方式更改资源名称。如果资源的名称更改,那么浏览器将自动再次获取该名称,因为它没有具有该名称的资源

我不知道你的用户是怎么做的,但是如果你正在裁剪或调整图片的大小,通常会同时给图片起一个新名字。例如,原稿可能是
original.jpg
,200x200作物可能是
original\u 200x200.jpg
,等等

除此之外,您还可以使用缓存破坏查询字符串强制浏览器重新请求资源。简单地做一些事情,比如将最后修改的日期附加为时间戳,通常是非常有效的。例如,不是将图像引用为
image.jpg
,而是将其引用为
image.jpg?1416417459
。一旦图像被修改,时间戳就会不同,浏览器会将其视为一个整体