【发布时间】:2011-08-12 06:37:10
【问题描述】:
我的缓存有问题。
当我更改 Image 控件的 ImageUrl 属性时,有时浏览器会使用缓存,因此不会显示新图像。
如何解决这个问题,以便在更改 ImageUrl 属性后,显示新图像?
这是我的代码:
字符串 url = 一些代码;
imgAvatar.ImageUrl = 网址;
【问题讨论】:
我的缓存有问题。
当我更改 Image 控件的 ImageUrl 属性时,有时浏览器会使用缓存,因此不会显示新图像。
如何解决这个问题,以便在更改 ImageUrl 属性后,显示新图像?
这是我的代码:
字符串 url = 一些代码;
imgAvatar.ImageUrl = 网址;
【问题讨论】:
您可以通过添加以下选项来关闭页面缓存
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.Buffer = true;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.AppendHeader("Cache-Control", "no-store");
Response.Expires = -1441;
【讨论】:
另一种避免缓存单个组件的方法是 Joel 在早期的 StackOverflow 播客中讨论的内容:在要避免缓存的组件的 url 末尾附加一个唯一标识符作为 http 参数。然后在需要确保用户获得新版本时更新该标识符。
因此,如果您的网址是“http://www.mysite.com/images/myimage.png”,那么您可以使用“http://www.mysite.com/images/myimage.png?v=20110819a”
注意:通常这个技巧更适用于 Javascript 和/或 CSS,而不是图像。
【讨论】: