You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

预植入Kingfisher图片缓存失效,需确认是否遗漏缓存状态文件

Kingfisher预打包缓存失效的问题解决
  • 你只备份了图片文件,但Kingfisher的缓存系统依赖元数据数据库追踪缓存状态,这个数据库默认和图片文件在同一目录下,包含KingfisherCache.sqlite、KingfisherCache.sqlite-shm、KingfisherCache.sqlite-wal三个核心文件。仅复制图片文件的话,Kingfisher无法识别这些缓存,所以isCached(forKey:)会返回false。

  • 正确操作步骤:

    1. 用Kingfisher下载完目标图片后,完整备份Library/Caches/com.onevcat.Kingfisher.ImageCache.default目录下的所有文件,不能只挑图片文件。
    2. 将备份的全部文件打包到应用Bundle中(比如新建PreCachedImages目录存放)。
    3. 应用首次启动时,将Bundle中的备份文件完整复制到Library/Caches/com.onevcat.Kingfisher.ImageCache.default路径下,确保覆盖空目录且文件权限为可读写(iOS缓存目录默认权限满足,但复制时不要修改权限)。
  • 补充说明:

    • 在线重新获取图片时,Kingfisher会自动补全数据库中的元数据记录,所以此时能识别到已有缓存文件,表现为文件修改时间更新但内容不变——本质是更新了数据库记录,并未重新下载图片。
    • 若使用自定义缓存名称,需对应修改备份和恢复的目录路径,默认缓存的目录后缀是default。

内容的提问来源于stack exchange,提问作者Jeff Lockhart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:55:18