我有一个显示来自绑定uri的图像的功能(即www.website.com/picture1.jpg)。
我发现并且现在明白手机会缓存下载的图像。我读到它只是应用程序的生命周期,但即使我关闭应用程序并返回到它,缓存中的相同图像出现。 有没有办法阻止这个特定页面的缓存发生?
编辑:图像定期更新,但仍然具有相同的名称,因此无需缓存。以安全摄像头为例。
非常感谢。
答案 0 :(得分:5)
除非你在每个GET上向图像uri添加一个随机查询字符串,否则无法绕过它,即
var imageUrl = "www.website.com/picture1.jpg";
var imageUri = new Uri(String.Format("{0}?{1}", imageUrl, Guid.NewGuid()));
缓存有点过于激进 - 如果在应用程序生命周期的任何http请求上对同一个Uri执行GET - 即使内容每次都更改 - 手机也会缓存它。当我试图与JSON-RPC Web服务交谈时,它让我困惑了好几个小时......
当然,一般情况下你会希望缓存图像 - 但是如果你确定你所经历的图像会经常变化,那么上面的图像就可以了。
答案 1 :(得分:2)
为URL添加唯一的查询字符串参数。 (例如,DateTime.Now
)
答案 2 :(得分:1)
CreateOptions上有BitmapImage属性(如果您在代码中加载),可以指定BitmapCreateOptions,其中一个是 IgnoreImageCache :在不使用现有图像缓存的情况下加载图像。只有在需要刷新缓存中的图像时才应选择此选项。
我没试过,但这听起来像你正在寻找的东西......如果你试试,我会对结果感兴趣。
答案 3 :(得分:0)
取决于您是否可以控制网站及其内容;不应该通过设置HTTP响应头来处理? 我认为平台尊重标题(未经验证)。
否则上面发布的随机字符串技巧将起作用。
答案 4 :(得分:-1)
缓存是一件好事,因为在您的情况下,它可以节省下载图像的成本,如果图像没有变化,为什么需要再次下载?
如果您的图片已被更改,并且您想要强制再次下载,则可以在网址上生成唯一ID。
但想一想,为什么?