【问题标题】:Xamarin forms: Image CacheXamarin 形式:图像缓存
【发布时间】:2026-02-08 21:50:02
【问题描述】:

您好,我正在尝试使用 xamarin 表单 PCL 构建应用程序。我正在实现使用默认图像的图像库。所有图像都在 blob 上。我想下载图像并将该图像缓存在设备中,一旦下载完成,我需要用它替换我的默认图像。 并且在下次加载应用程序时,仅当它不存在于缓存中时才下载图像。 我没有任何用于图像缓存和从缓存加载图像的插件。 我见过一个名为 FFPLUGIN 的插件,但它没有用。 知道如何实现吗?图像缓存

【问题讨论】:

  • 你的图片是动态命名的还是有静态的url,比如mywebsite.com/myimage.png
  • @user1 动态命名
  • 网络图片默认缓存 24 小时,Xamarin.Forms.Image。您可以通过更改 CacheValidity 来增加它

标签: c# xamarin.forms portable-class-library memorycache


【解决方案1】:

您可以在此处显示的 Xamarin 表单中使用内置的 ImageCaching

https://developer.xamarin.com/guides/xamarin-forms/working-with/images/#Downloaded_Image_Caching

下载的图片缓存

UriImageSource 还支持缓存 下载的图片,通过以下属性配置:

CachingEnabled - 是否启用缓存(默认为 true)。

CacheValidity - 一个时间跨度,定义图像的长度 存储在本地。默认情况下启用缓存并将存储图像 本地24小时。要禁用特定图像的缓存, 像这样实例化图像源:

Image.Source = new UriImageSource {CachingEnabled = false,
Uri="http://server.com/image"}; To set a specific cache period (for
example, 5 days) instantiate the image source like this:


webImage.Source = new UriImageSource {
Uri = new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"),
CachingEnabled = true,
CacheValidity = new TimeSpan(5,0,0,0) };

内置缓存使支持图像滚动列表等场景变得非常容易,其中 您可以在每个单元格中设置(或绑定)图像并让内置缓存 当单元格滚动回时,请注意重新加载图像 查看。

【讨论】:

  • 但是我将如何检查它是否在缓存中
  • 我希望我的图片仅在它们不在应用缓存中时才下载
  • Xamarin Forms Image 会帮你检查,如果没有重新下载图片
  • 我的应用程序可以在离线模式下运行,这也是我寻找图像缓存的原因。如果没有互联网,会有什么不同吗?
  • 如果应用程序无法将image 下载到缓存中,则不会显示任何图像。一旦图像在缓存中,我建议将CacheValidity 设置为Timspan.MaxValue,然后图像将被永久缓存