Flutter 颤振中缓存大小的最大限制

Flutter 颤振中缓存大小的最大限制,flutter,Flutter,我使用Firestore作为数据库,并在我的Flitter应用程序(iOS和Android)中加载和缓存图像。我注意到,在运行应用程序一段时间后(在调试模式下),应用程序的缓存大小变得太大(+300 mb)。 应用程序在Flatter中使用的缓存大小是否有最大限制? 是否有办法强制限制缓存大小,以便每当缓存大小达到其最大限制时,将删除最旧的缓存文件?cached\u network\u image依赖于 一个CacheManager,用于在的缓存目录中下载和缓存文件 应用程序。可以更改文件保留时

我使用Firestore作为数据库,并在我的Flitter应用程序(iOS和Android)中加载和缓存图像。我注意到,在运行应用程序一段时间后(在调试模式下),应用程序的缓存大小变得太大(+300 mb)。 应用程序在Flatter中使用的缓存大小是否有最大限制?
是否有办法强制限制缓存大小,以便每当缓存大小达到其最大限制时,将删除最旧的缓存文件?

cached\u network\u image依赖于

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

它的工作原理

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

有关文件的信息使用sqflite存储在数据库中。数据库的文件名是cacheManager的键,这就是为什么它必须是唯一的

此缓存信息包含文件有效之前的结束日期以及与http缓存控件一起使用的eTag

方法

removeFile
从缓存中删除文件

emptyCache
从缓存中删除所有文件

范例

void _clearCache() {
    DefaultCacheManager().emptyCache();
    
  }
如果您希望能够在某个时间之后删除图像,则必须实现一个自定义缓存,该缓存在给定的天数之后删除图像

来自文件TL:DR

class CustomCacheManager extends BaseCacheManager {
  static const key = "customCache";

  static CustomCacheManager _instance;

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

  CustomCacheManager._() : super(key,
      maxAgeCacheObject: Duration(days: 7),
      maxNrOfCacheObjects: 20);

  Future<String> getFilePath() async {
    var directory = await getTemporaryDirectory();
    return p.join(directory.path, key);
  }
类CustomCacheManager扩展了BaseCacheManager{
static const key=“customCache”;
静态CustomCacheManager\u实例;
factory CustomCacheManager(){
if(_instance==null){
_实例=新的CustomCacheManager.uz();
}
返回_实例;
}
CustomCacheManager.uz():super(键,
maxAgeCacheObject:持续时间(天:7),
maxNrOfCacheObjects:20);
未来的getFilePath()异步{
var directory=await getTemporaryDirectory();
返回p.join(directory.path,key);
}
对于您的用例,请使用clearDiskCachedImages方法缓存图像并清除缓存

// Clear the disk cache directory then return if it succeed.
///  <param name="duration">timespan to compute whether file has expired or not</param>
Future<bool> clearDiskCachedImages({Duration duration})
//清除磁盘缓存目录,如果成功则返回。
///计算文件是否已过期的时间跨度
未来的clearDiskCachedImages({Duration})

图像缓存可缓存多达1000个图像,以及多达100 MB的图像。这可能会更多,但最小值为100 MB。

您有任何来源吗?