分享

关于c#:如何刷新图像的浏览器缓存? | 码农家园

 行走在理想边缘 2023-02-01 发布于四川

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


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

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

.aspx代码

1

后面的代码:

1
2
3
    string baseImage ="/images/nocache.jpg";
    int rand = new Random().Next(99999999);
    Image1.ImageUrl = string.Concat(baseImage, '?', rand);
  • 带有查询字符串的请求将永远不会被浏览器缓存。我希望缓存此图像,但是在更改图像时,应使用服务器端代码或客户端代码来强制刷新此图像的浏览器缓存。
  • 在这种情况下,您可以附加上次修改源图像文件的日期时间,而不是随机数。
  • 好东西。谢谢... :)

一种解决方案是使用File.GetLastWriteTime附加到图像URL。

您会因此而受到一些性能影响,但是如果您的名字必须保持不变并且您想要实时更新缓存,这将对您有效:

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

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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多