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 等技术。
目前我正在尝试从 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)? 你知道我该如何解决这个问题吗?
非常感谢 (:
我在这里回答了类似的问题
在您当前的解决方案中,您的代码必须首先 ping 存储桶,验证安全规则,然后 return 下载 URL 到客户端,然后您可以使用它来下载和呈现图片。通过将下载文件存储URL 到您的数据库(例如 Firestore 文档)并直接从那里渲染,可以完全消除这种开销,这是常见的做法。
您的图像非常小,因此负载大小应该不是什么大问题。
可能导致下载时间变慢的其他因素是存储桶相对于最终用户的位置,因此您可能需要考虑移动存储桶的位置或使用可以托管图像的 CDN在靠近您的应用用户所在的地理位置。
另一种选择是提前下载并缓存您的图像,以便您可以在用户请求时尽快呈现它们。
其他应用之所以能够更快地渲染图像,是因为它们结合使用了压缩、缓存、CDN 等技术。