【问题标题】:Maximum limit of cache size in flutterFlutter中缓存大小的最大限制
【发布时间】:2020-09-27 13:32:17
【问题描述】:

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

【问题讨论】:

    标签: flutter


    【解决方案1】:

    cached_network_image 依赖于flutter_cache_manager

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

    工作原理

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

    有关文件的信息使用 sqflite 存储在数据库中。数据库的文件名是cacheManager的key,所以它必须是唯一的。

    此缓存信息包含文件有效之前的结束日期以及与 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);
      }
    

    【讨论】:

      【解决方案2】:

      图片缓存最多可以缓存 1000 张图片最多可以缓存 100 MB。这可能更多,但至少为 100 MB。

      【讨论】:

      【解决方案3】:

      对于您的用例,使用 extended_image 缓存图像并使用 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})
      

      【讨论】:

        猜你喜欢
        • 2011-01-06
        • 1970-01-01
        • 2019-07-28
        • 2012-02-08
        • 2013-04-01
        • 2021-11-17
        • 1970-01-01
        • 2017-03-23
        • 2011-02-25
        相关资源
        最近更新 更多