Winrt xaml 位图图像和缓存

Winrt xaml 位图图像和缓存,winrt-xaml,win-universal-app,uwp,Winrt Xaml,Win Universal App,Uwp,我正在编写一个C#/XAML UWP应用程序,广泛使用BitmapImage类并从internet加载大量图像。从我读到的内容来看,这个类以某种方式兑现了它显示的图像,我还提出了一些关于这个缓存如何工作的问题: a) 如果我将图像从给定Url加载到BitmapImage,假设该Url下的图像没有更改,这是否意味着当我关闭并再次打开应用程序并从同一Url加载BitmapImage时,图像是从本地缓存加载的 b) 如果a)的答案为“是”,则表示图像在光盘/microSD/内存等的某个位置被刷新。如何

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

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

b) 如果a)的答案为“是”,则表示图像在光盘/microSD/内存等的某个位置被刷新。如何清理此缓存?当我下载大量图像时,此缓存可能会占用大量空间,系统如何处理


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

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

B的答案是:

如果要清除Windows应用商店缓存,有一个内置组件可以完成此操作:

  • 按WinKey+Q以显示搜索并键入WSRESET

  • 在结果中,单击wsreset重置存储缓存

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

  • 你的问题C的答案是:

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


    如果有任何不清楚的地方,请告诉我。

    将创建选项设置为BitmapCreateOptions.IgnoreImageCache会阻止任何缓存发生吗?它只会阻止应用程序从缓存加载图像。请参阅此处了解更多详细信息: