如何刷新图像的浏览器缓存?

时间:2013-11-17 14:35:28

标签: c# asp.net

在我的asp.net Web应用程序中,我在母版页中有一个asp.net图像控件。用户可以上传和更改图像。但是,由于某些原因,保存在服务器中的图像名称应保持不变。通常,此图像应缓存在浏览器中。 当用户尝试通过上传新图像来更改图像时,图像文件会在服务器中被替换,但用户仍然会在浏览器中看到缓存的图像。是否仍然只在保存新图像时刷新浏览器中缓存的图像?

2 个答案:

答案 0 :(得分:7)

可以用来阻止缓存的一个技巧是将随机字符串连接到图像的末尾:

  <img src="/images/nocache.jpg?34343434" />

.aspx代码

<asp:Image id="Image1" runat="server" />

代码背后:

    string baseImage = "/images/nocache.jpg";
    int rand = new Random().Next(99999999);
    Image1.ImageUrl = string.Concat(baseImage, '?', rand);

答案 1 :(得分:4)

一种解决方案是使用File.GetLastWriteTime附加到图片网址。

你会得到一些性能影响,但如果你的名字必须保持不变,并且你想要实时更新缓存,这对你有用:

string imageUrl = "/images/user.jpg";
imageUrl += "?ver=" + File.GetLastWriteTime(Server.MapPath(imageUrl)).ToFileTime(); 

其他解决方案是跟踪数据库中的图像版本,每当用户上传新图像时,您都会更改版本并将其附加到网址。

相关问题