与Firebase主机相比,Firebase存储速度非常慢

与Firebase主机相比,Firebase存储速度非常慢,firebase,firebase-storage,firebase-hosting,Firebase,Firebase Storage,Firebase Hosting,有人知道为什么firebase存储比firebase托管速度慢得可笑吗 结果 下载firebase主机映像的时间:16ms 从firebase存储下载相同图像的时间:2.23s(2.22s为TTFB) 从firebase存储(亚太地区)下载相同图像的时间:1.72s(1.70s为TTFB) (文件大小:22.7kb/jpeg/firebase存储已对所有人开放) 这在测试中反复出现。是否有任何方法可以将此速度提高到一个合适的时间,或者firebase存储无法用于小文件(图像/拇指) 用于比较

有人知道为什么firebase存储比firebase托管速度慢得可笑吗

结果

  • 下载firebase主机映像的时间:
    16ms
  • 从firebase存储下载相同图像的时间:
    2.23s(2.22s为TTFB)
  • 从firebase存储(亚太地区)下载相同图像的时间:
    1.72s(1.70s为TTFB)
  • (文件大小:22.7kb/jpeg/firebase存储已对所有人开放)
这在测试中反复出现。是否有任何方法可以将此速度提高到一个合适的时间,或者firebase存储无法用于小文件(图像/拇指)

用于比较

  • S3北校准-大约
    500ms
  • S3亚太地区-大约
    30ms
  • Cloudinary-大约
    20ms
额外信息:

  • 我住在澳大利亚
  • 完全相同的文件。图像大小始终小于100kb
  • 根据开发工具,减速始终在TTFB中
  • 托管URL:https://.firebaseapp.com/images/thumb.jpg
  • 存储URL:.appspot.com/o/thumb.jpg?alt=media&token=

Hosting=Storage+CDN,因此,实际上您看到的是您在附近找到了一个CDN,而不是直接进入GCS或S3存储桶。Cloudinary/Imgix也是如此。这就是为什么托管性能比存储性能好得多的原因

解决AWS和GCP之间TTFB如此不同的问题:不幸的是,这是GCS与S3之间的已知问题(参见w/深入性能分析)。我知道这个团队正在努力解决这个问题,但采用“将CDN放在前面”的路线将提供更快的解决方案(前提是您不需要限制访问,或者您的CDN可以授权请求)

注:GCP已宣布将于2017年推出悉尼地区(),这可能会对您有所帮助。

我找到了解决方案

如果您的文件已上载到存储,请转到:>选择您的存储桶>选择所有感兴趣的文件,然后单击“公开”(或类似内容-我不是英语母语)

要在默认情况下公开所有新上载的文件,您需要安装Google cloud SDK(),并在命令行中为您的bucket使用以下命令:

gsutil defacl set public read gs://your_bucket

之后,我的所有当前和新图像都可以在storage.googleapis.com/my_project.appspot.com/img/image_name.jpg中找到
下载时间肯定更短。

除了@Ziwi-answer。 我认为直接在Firebase中更改规则也是可以的

// Only a user can upload their profile picture, but anyone can view it
service firebase.storage {
  match /b/<bucket>/o {
    match /users/{userId}/profilePicture.png {
      allow read;
      allow write: if request.auth.uid == userId;
    }
  }
}
//只有用户可以上传他们的个人资料图片,但任何人都可以查看
服务firebase.storage{
匹配/b//o{
匹配/users/{userId}/profilePicture.png{
允许读取;
允许写入:如果request.auth.uid==userId;
}
}
}
来源是


谢谢你,迈克。最后我把fast.ly放在了我的储物桶前面。如果有一个CDN/Fastly作为付费插件来节省麻烦,那就太好了!那么,目前真的没有选择使用firebase存储来存储具有合理下载时间的照片吗?这比从我的ftp服务器上获取照片要慢10倍(每年10美元)。很难相信像firebase这样的大型服务会有这样的问题。我发现在这里,我可以设置每个照片都有一个公共链接,然后从该公共链接获取照片的速度非常快(大约50毫秒)。所以现在的问题是:有没有办法让每个上传的照片公开?现在可以使用云控制台中的GUI让每个照片公开。谢谢你给我这个提示!公开共享存储数据的文档:我们应该接受这个答案,这是我得到的最佳答案谢谢,它适用于Firebase存储,带有
gsutil acl ch-u alluser:R gs://project.appspot.com/filename.json
。加载时间已从平均550ms缩短到30ms。firebase上的存储规则是否仍然适用?