caching - 如何在 Flutter 中更改图像缓存的缓存持续时间(包 : flutter_cached_network_image & flutter_cache_manager)

标签 caching flutter flutter-dependencies dart-pub

我一直在尝试为flutter中的图片添加缓存,但是一直无法设置缓存时长。

我试过使用 cached_network_image包,我有一个自定义缓存管理器,我将缓存持续时间覆盖为 2 分钟(而不是将其作为默认值,即 30 天),但图像被缓存超过 2 分钟,它甚至还在1 天后缓存)。

当我简单地使用 Image.network 组件时,图像没有被缓存。

我的自定义缓存管理器:

class ImageCacheManager extends BaseCacheManager {
  static const key = "libCachedImageData";

  static ImageCacheManager _instance;

  factory ImageCacheManager() {
    if (_instance == null) {
      _instance = new ImageCacheManager._();
    }
    return _instance;
  }

  ImageCacheManager._() : super(key, maxAgeCacheObject: Duration(minutes: 2));

  Future<String> getFilePath() async {
    var directory = await getTemporaryDirectory();
    return p.join(directory.path, key);
  }
}

预期:图像的缓存时间不会超过我指定的时间(例如 2 分钟)

实际:图像缓存的时间比我指定的时间长(至少 36 小时)

最佳答案

当我想更改要缓存的资源的 maxAge 时,我最近遇到了类似的问题。问题是,在内部 cache_manager 会考虑带有 max-age 值的缓存控制响应 header 来设置缓存期限。如果资源没有返回 max-age 响应 header ,它默认将其设置为 7 天,我们没有针对它的配置。对于 hack,我们可以在链接到自定义缓存管理器的 customHttpGetter 方法中设置响应 header ,让缓存使用它进行缓存。我试过这么做,效果很好!

https://referbruv.com/blog/posts/caching-get-request-calls-using-flutter-cache-manager

关于caching - 如何在 Flutter 中更改图像缓存的缓存持续时间(包 : flutter_cached_network_image & flutter_cache_manager),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589958/

相关文章:

flutter - 在 flutter ListView 达到最大范围之前,我们如何进行分页?

java - Log4J文件不打印日志数据

ruby-on-rails - Google Geocoding API 错误 : over query limit. - Rails

firebase - 如何将 Firestore 文档数据转换为类

google-maps - 未处理的异常:PlatformException(错误,java.lang.IllegalStateException:试图创建一个已经创建的平台 View , View ID:0

flutter - 如何修复调用 API 时卡住的 flutter 应用程序(仅限发布版本)

ios - 在 iOS 上执行期间正在删除临时文件

php - 调用 captcha.php 时,我的验证码图像未显示在我的页面上

flutter - websocket 自动重新连接 flutter 和 Riverpod?

flutter - 为什么 LayoutBuilder 不能有固有尺寸?