IIS 7强制新鲜图像

Est*_*aya 4 asp.net iis-7 web-config

如何强制IIS 7 缓存特定页面的图像?

slu*_*ter 5

我原以为是你的浏览器正在进行缓存.

无论如何,只要您的链接未在html中静态声明,就可以在图片网址的末尾附加一个随机数:

<img src="http://mywebsite/images/mypic.png?a=123456" />
Run Code Online (Sandbox Code Playgroud)

这个论点没有任何意义,因为你对它没有任何作用,但对于浏览器它看起来像一个新的未缓存的链接.

你如何把这个随机数放在最后由你决定:

<img src="javascript:getMyLink();" />
Run Code Online (Sandbox Code Playgroud)

或者从后面的代码:

Image myImage = new Image();
myImage.Source = "myurl?a=" + Guid.NewGuid().ToString();
someOtherControl.Controls.Add(myImage);
Run Code Online (Sandbox Code Playgroud)

(当然这是伪代码,你需要检查属性名称是否正确).


Ric*_*kNZ 5

在IIS7中,您可以在web.config中以声明方式或以编程方式执行此操作.

<location path="YourPath">
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="DisableCache" />
    </staticContent>
  </system.webServer>
</location>
Run Code Online (Sandbox Code Playgroud)

程序化解决方案需要一个简单的HttpModule,它已注册为集成模式下的所有请求运行,您可以在其中查找您关注的URL.然后打电话:

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Run Code Online (Sandbox Code Playgroud)

FWIW,您可能希望仅考虑禁用客户端缓存,同时启用服务器端缓存HttpCacheability.ServerAndNoCache.此外,如果在图像名称上添加查询字符串,则将阻止http.sys进行服务器端缓存.

如果有帮助,我会在我的书中详细介绍这些技术:Ultra-Fast ASP.NET.