2011-02-13 50 views
3

我有一个显示来自绑定的uri(即www.website.com/picture1.jpg)的图像的功能。在wP7中停止图像缓存

我发现,现在明白手机会缓存下载的图像。我读到它仅适用于应用程序运行的生命,但即使关闭应用程序并重新进入应用程序,缓存中的相同图像也会出现。 有没有办法阻止这个缓存发生在这个特定的页面?

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

非常感谢。

回答

5

,除非你添加一个随机的查询字符串的图像URI每个有没有办法解决它GET即

var imageUrl = "www.website.com/picture1.jpg"; 
var imageUri = new Uri(String.Format("{0}?{1}", imageUrl, Guid.NewGuid())); 

缓存是有点过于激进 - 如果做一个GET到相同的URI上任何HTTP请求应用程序生命周期 - 即使内容每次都改变 - 手机将缓存它。当我试图与JSON-RPC网络服务进行交谈时,它让我感到困惑了几个小时......

当然,一般情况下您会希望图像被缓存 - 但是如果您确定图像将经常改变,然后上述将工作。

+0

谢谢。我不知道如何在我的情景中做到这一点,但我会希望工作。 我仍然有一些从昨天存储的图像,但只是一些。我无法解决它。 我甚至断开了手机与任何网络连接,它从昨天抓取了一些图像(尽管我已经删除并重新安装了该应用程序!) – 2011-02-13 15:52:39

+0

听起来就像你在做一些缓存的防火墙/代理一样好吧。从手机中删除应用程序将擦除与该应用程序有关的所有内容,包括所有缓存的数据。 Uri上的随机查询字符串(大多数情况下)也会绕过代理缓存,因此它可能会解决所有问题。 – Tyler 2011-02-13 19:53:54

2

向URL添加一个唯一的查询字符串参数。 (例如,DateTime.Now

+0

或GUID ........ – 2011-02-13 04:36:03

-1

缓存是一件好事,在你的情况下,它可以节省下载图像的成本,如果图像没有改变,为什么你需要重新下载它?

如果您的图片已被更改,并且您想强制再次下载,您可以在url上生成唯一的ID。

但想一想,为什么?

+0

嗨,重点是图像每隔几分钟就会改变一次。 – 2011-02-13 12:22:47

0

取决于您是否拥有对网站及其内容的控制权;不应该通过设置HTTP响应头来处理这个问题吗? 我会假设平台尊重标题(未验证)。

否则上面发布的随机字符串技巧将工作。

1

CreateOptions财产上BitmapImage(如果要加载代码),它可以让你指定BitmapCreateOptions,其中之一是IgnoreImageCache:不使用现有的图像缓存加载图像。只有当缓存中的图像需要刷新时才应选择此选项。

我没有试过它,但它听起来像是你正在寻找的东西......如果你确实尝试过,我会对结果感兴趣。