flutter_cache_manager

一个 CacheManager,用于在应用的缓存目录中下载和缓存文件。可以更改文件保留时长等各种设置。

它使用 cache-control http 标头来高效地检索文件。

用法

    var cacheManager = await CacheManager.getInstance();
    var file = await cacheManager.getFile(url);

设置

CacheManager 的一些设置可以更改。
所有这些偏好设置都是静态的,应该在第一次使用 CacheManager 之前设置,所以最好直接在您的应用程序启动时设置。

要进行额外的日志记录,请设置

  CacheManager.showDebugLogs = true;

缓存可以在使用以获取文件后进行清理。默认情况下,这每周发生一次。您可以通过设置 inBetweenCleans 来更改此设置。

  CacheManager.inBetweenCleans = new Duration(days: 7);

CacheManager 会检查两件事:过期的对象和缓存的大小。

默认情况下,它会移除 30 天内未使用的对象。通过 maxAgeCacheObject 进行设置。*这与对象首次下载的时间无关,而是与最后一次使用对象的时间有关。

  CacheManager.maxAgeCacheObject = new Duration(days: 30);

默认情况下,缓存大小设置为 200,当缓存超过此大小时,它将根据最后使用时间再次删除最旧的对象。通过 maxNrOfCacheObjects 进行设置。

  CacheManager.maxNrOfCacheObjects = 200;

工作原理

缓存的文件存储在应用程序的临时目录中。这意味着操作系统可以随时删除这些文件。

文件信息存储在共享偏好设置中,键为“lib_cached_image_data”。(因为图片是此库的首次使用:)) 缓存最后清理的日期存储为“lib_cached_image_data_last_clean”。

此缓存信息包含文件有效的截止日期以及 http cache-control 要使用的 eTag。

GitHub

https://github.com/renefloor/flutter_cache_manager