BitmapImage 和缓存

BitmapImage and caching

我正在编写一个 C#/XAML UWP 应用程序,它广泛使用 BitmapImage class 并从 Internet 加载大量图像。从我读到的内容来看,class 以某种方式兑现了它显示的图像,我对这个缓存的工作原理提出了几个问题:

a) 如果我从给定的 Url 加载图像到 BitmapImage,假设 Url 下的图像没有改变,这是否意味着当我关闭和打开应用程序时再次从同一个 Url 加载一个 BitmapImage,图像是从本地缓存加载的吗?

b) 如果 a) 的答案是肯定的,则表示图像存储在 disc/microSD/internal memory/etc 上的某处。我该如何清理这个缓存?当我下载大量图像时,此缓存可能会占用大量 space,系统如何处理?

c) 如果 a) 的答案是肯定的,系统如何确定是从 Url 下载图像还是从缓存加载图像?给定 Url 下的内容可以更改,所以我猜它必须保留某种基于图像内容的哈希值。它会以显着的方式影响性能吗?

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

B 的答案:

如果你想清除 Windows 存储缓存,有一个内置组件可以完成此操作:

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

  2. 在结果中,单击 wsreset 以重置存储缓存。

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

你问题C的答案:

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

如有不明之处请告诉我。