2015-11-04 81 views
1

我正在写一个C#/ XAML UWP应用程序,广泛使用BitmapImage类并从互联网上加载大量图像。从我读过的这个类以某种方式兑现了它显示的图像,并且我已经提出了一些关于这个缓存如何工作的问题:BitmapImage和缓存

a)如果我将图像从给定Url加载到BitmapImage,假设该图像根据该Url不会改变,这是否意味着当我关闭应用程序并再次打开并从同一Url加载BitmapImage时,图像从本地缓存加载? b)如果对a)的答案是肯定的,则意味着图像在光盘/ microSD /内部存储器等的某处进行了编码。我怎样才能清理这个缓存?当我下载大量图像时,这个缓存可能占用很多空间,这是怎么处理的? c)如果对a)的答案是肯定的,那么系统如何确定它应该从Url下载图像还是从缓存中加载图像?给定的Url下的内容可以改变,所以我猜它必须保留基于图像内容的某种散列。它能否以显着的方式影响性能?

回答

2

当您关闭应用程序时,应用程序进入终止状态,系统将释放此应用程序的所有已分配资源。如果应用程序在退出之前未将图像存储到本地存储缓存(BitmapCreateOptions设置为IgnoreImageCache)或在下次开始之前清除缓存,则下次仍需要从Url加载图像。

答案B:

如果要清除Windows应用商店缓存,还有一个内置的组件来实现这一点:

  1. 按WINKEY + Q来显示搜索并键入WSRESET。

  2. 在结果中,单击wsreset重置Store Cache。

  3. Windows应用商店将打开并确认缓存已被清除。

的回答你的问题C:

您可以决定何时以及如何通过设置CreateOptions缓存。如果您知道通过URI检索到的源图像文件可能随时间变化,则应该使用BitmapCreateOptions.IgnoreImageCache。默认值是将整个图像缓存到内存中。

请让我知道,如果有什么不清楚。

+0

将设置创建选项BitmapCreateOptions.IgnoreImageCache防止任何缓存发生? – Robert

+0

它只会阻止应用程序从缓存中加载图像。请参阅此处了解更多详细信息:https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapcreateoptions(v=vs.110).aspx –