Flutter 从 google firebase 加载图像非常慢

Flutter load images very slow from google firebase

目前我正在尝试从 google firebase 加载图像。 加载图像并在我的应用程序中显示它们有效。 但是我发现加载图片会很慢。

我需要大约3秒来显示一个简单的网络图片。 我的网络连接很好。

这是我加载图像的代码:

child: FutureBuilder<dynamic>(
            future: loadImages(), // async work
            builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
              switch (snapshot.connectionState) {
                case ConnectionState.waiting:
                  return Text('Loading....');
                default:
                  if (snapshot.hasError)
                    return Text('Error: ${snapshot.error}');
                  else
                    return Image.network(snapshot.data);
              }
            },
          ),
        ),
      ),
Future loadImages() async {
  Reference ref = FirebaseStorage.instance
      .ref()
      .child("images/product/product_images/")
      .child('productImage_1631118157638_KuymkIGLXUTl0nMw8RENcdEqXUo2');

  return await ref.getDownloadURL();
}

该代码仅显示我的 firebase 存储中的一张图像。

这里是一个示例图片:

我的问题:

可以更快地从 firebase 存储加载图像,或者 firebase 有时间限制来加载图像? 为什么我的图像加载速度如此之慢,但在其他应用程序中却没有(DeviantArt)? 你知道我该如何解决这个问题吗?

非常感谢 (:

我在这里回答了类似的问题 and here

在您当前的解决方案中,您的代码必须首先 ping 存储桶,验证安全规则,然后 return 下载 URL 到客户端,然后您可以使用它来下载和呈现图片。通过将下载文件存储URL 到您的数据库(例如 Firestore 文档)并直接从那里渲染,可以完全消除这种开销,这是常见的做法。

您的图像非常小,因此负载大小应该不是什么大问题。

可能导致下载时间变慢的其他因素是存储桶相对于最终用户的位置,因此您可能需要考虑移动存储桶的位置或使用可以托管图像的 CDN在靠近您的应用用户所在的地理位置。

另一种选择是提前下载并缓存您的图像,以便您可以在用户请求时尽快呈现它们。

其他应用之所以能够更快地渲染图像,是因为它们结合使用了压缩、缓存、CDN 等技术。