【问题标题】:Does the package cached_network_image reduce the amount of network bandwidth from Firestore Storage?包 cached_network_image 是否会减少 Firestore 存储的网络带宽量?
【发布时间】:2021-01-01 02:41:21
【问题描述】:

目前我正在从包含 Firebase Cloud Storage 的图像 URL 的 firebase 文档中读取图像 URL,然后使用包 cached_network_image 将图像加载给用户。

我的问题是,使用cached_network_image 加载图像是否会减少网络带宽,因为许多图像将从缓存而不是 url 加载?如果没有,那如何实现呢?

【问题讨论】:

    标签: image firebase flutter caching google-cloud-storage


    【解决方案1】:

    cached_network_image 正在使用缓存机制,该机制将检查您提供的 url 是否有可用的文件,将使用缓存版本,因此它肯定会减少您的网络使用量。这是 Flutter SDK 中 cache_manager.dartDefaultCacheManager 类的一个函数:

    Future<void> _pushFileToStream(StreamController streamController, String url,
    Map<String, String> headers, bool withProgress) async {
      FileInfo cacheFile;
      try {
        cacheFile = await getFileFromCache(url);
        if (cacheFile != null) {
          streamController.add(cacheFile);
          withProgress = false;
        }
      } catch (e) {
        print(
            'CacheManager: Failed to load cached file for $url with error:\n$e');
      }
      if (cacheFile == null || cacheFile.validTill.isBefore(DateTime.now())) {
        try {
          await for (var response
              in _webHelper.downloadFile(url, authHeaders: headers)) {
            if (response is DownloadProgress && withProgress) {
              streamController.add(response);
            }
            if (response is FileInfo) {
              streamController.add(response);
            }
          }
        } catch (e) {
          assert(() {
            print(
                'CacheManager: Failed to download file from $url with error:\n$e');
            return true;
          }());
          if (cacheFile == null && streamController.hasListener) {
            streamController.addError(e);
          }
        }
      }
      unawaited(streamController.close());
    }
    

    如您所见,它是否可以使用您提供的 url 找到缓存文件并且文件有效,它将使用该文件而不是下载。

    【讨论】:

    • 谢谢,所以据我了解,'cached_network_image' 将无法知道 URL 的内容是否已更改,而是仍会使用已缓存的旧版本,对吗?
    • 是的,我认为是这样的@MK
    猜你喜欢
    • 2020-10-27
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多