firebase - 从 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 存储访问文件的下载时间。以下是我所做的一些步骤:
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对此问题的早期回应。
推荐阅读
- machine-learning - Keras 验证准确率不会超过 75% 并且预测表现不佳
- python - 按列错误对 NumPy 中的数组进行排序
- android - 从 FirebaseMessagingService 重新加载 Webview
- python - 在 x 轴上绘制具有特征的直方图,并且每个条形应反映具有差异颜色的目标类 var
- php - 无法解析响应标头
- c# - C# Pogressbar & Backgroundworker
- visual-studio-2017 - 如何插入
作为 app.config 中的第一个孩子 - python - 关于tensorflow的Tensor
- java - 当达到阈值时,LinkedHashMap 是否也 treeifyBin/treefybucket?
- javascript - Droppable 事件偶尔不起作用