我一直在尝试为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/