首页 > 解决方案 > 从 Firebase 存储下载文件非常慢

问题描述

场景: 我正在从 firebase 存储下载图像/视频文件并将它们显示在列表中。

问题:响应很慢。下载图像/视频需要太多时间。

代码

Directory tempDir = await getTemporaryDirectory();
final File tempFile = File('${tempDir.path}/$fileName');
if(tempFile.existsSync()){
  await tempFile.delete();
}

await tempFile.create();
var ref = FirebaseStorage.instance.ref(path); 
// final DownloadTask task = ref.writeToFile(tempFile);
final DownloadTask task = ref.writeToFile(tempFile);

await task.then((value) => {
  file = tempFile
  //Also delete the temp file
  // await tempFile.delete();
});

结果:文件成功下载,但响应时间过长。关于如何加快下载速度的任何建议。我还使用发布 apk 测试了真实设备上的响应,但从 Firebase 存储下载速度仍然太慢。我正在使用 20MBPS 的互联网连接,因此下载数据的速度相当不错。此外,将文件上传到 Firebase 存储非常不错,我没有发现任何问题。

注意:我目前正在使用 Firebase 免费计划进行开发。这会影响下载响应吗?这里真的需要一些专家的建议。

Firebase 上的图像 Firebase 上的图片

FIREBASE 上的视频 在此处输入图像描述

标签: firebaseflutter

解决方案


我设法减少了从 Firebase 存储访问文件的下载时间。以下是我所做的一些步骤:

1 -所有 Firebase 项目基本上都是 Google Cloud 项目。不知道这一点,因为我是 Firebase 和服务器端环境的新手。 了解 Firebase 项目

2-我找到了关于从基本上是谷歌云存储桶的 firebase 存储桶快速访问的答案。 与 Firebase 托管相比,Firebase 存储非常慢

Zywy发布的解决方案。除了将存储桶公开之外,他还提到您需要安装 Google Cloud SDk 才能将文件(将上传到存储桶)公开。我认为这是原生 android 开发的情况,而不是 Flutter。我没有安装 Cloud SDK。我只是将存储桶公开,然后上传到存储桶的所有文件也都是公开的。如果我在这里错了,请纠正我。

所以基本上我所做的就是默认让我的桶公开。这是有关如何执行此操作的链接: 公开数据

将存储桶公开后,下载需要 150-200 毫秒的图像文件将减少到 10-30 毫秒(毫秒)。

任何像我一样刚接触 Firebase 并陷入相同情况的人都应该遵循这些步骤。

另外,我还在学习 Firebase,所以如果有人有一些专家建议可以更好地回答这个问题,或者我对这个问题有任何误解,那么请让我和整个社区知道这一点。

另外,我仍在搜索有关公开存储桶的安全问题。有害还是无害?因此,如果有任何云平台安全专家,请告诉我们。

感谢Robert Sandberg对此问题的早期回应。


推荐阅读