我正在从调用动作方法返回一个图像(png),我想停止浏览器缓存图像。
return File(reply, "image/png", "{0}_Graph".FormatWith(ciName));
我已经尝试了所有常见的事情,在文件输出响应中添加了一组不同的标题,但似乎没有一个对我有效。
基本上我的action方法返回一个在服务器上生成的图形,可能会不时出现。我在客户端使用Javascripts Image
对象,并将其src
设置为我的操作方法。
var image = new Image();
image.src = baseUrl + params;
每次请求相同的URL时,服务器都不会被命中。
我可以在查询字符串中附加一个随机数等,但我想知道是否有更好的方法。
答案 0 :(得分:1)
您可以设置适当的HTTP标头以防止缓存(我不知道如何在ASP.NET中执行此操作,但我想它会像HTTP.Response.setHeader("foo", "bar")
:
"Pragma-directive: no-cache"
"Cache-directive: no-cache"
"Cache-control: no-cache"
"Pragma: no-cache"
"Expires: 0"
如果您不喜欢随机数解决方案,请使用当前时间戳:
image.src = baseUrl + params + '&t=' + new Date().getTime();
答案 1 :(得分:1)
由于这是MVC,因此请使用MVC OutputCache属性。请参阅我的回复: Disable browser cache for entire ASP.NET website
还要记得在尝试之前清除缓存。如果它已经缓存,则结果可能不一致。