在wP7中停止图像缓存

时间:2011-02-13 03:56:33

标签: c# silverlight windows-phone-7 silverlight-3.0

我有一个显示来自绑定uri的图像的功能(即www.website.com/picture1.jpg)。

我发现并且现在明白手机会缓存下载的图像。我读到它只是应用程序的生命周期,但即使我关闭应用程序并返回到它,缓存中的相同图像出现。 有没有办法阻止这个特定页面的缓存发生?

编辑:图像定期更新,但仍然具有相同的名称,因此无需缓存。以安全摄像头为例。

非常感谢。

5 个答案:

答案 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。

但想一想,为什么?