fla*_*urx 3 firebase reactjs react-native firebase-storage google-cloud-firestore
我在 React-Native 应用程序(expo)上使用 Firebase,并且遇到了一些性能问题(主要是 Firebase 存储)。
例如,每当我获取帖子的数据并想要显示照片时,如果照片(640x480)上传到应用程序 Firebase 存储上,我必须等待大约 1.5-2 秒,视频(480p)需要等待 2.5-3.5 秒。
但是,当我将 firestore 字段中的链接更改为外部链接(相同图像 - 相同分辨率,但托管在另一台主机上,而不是 firebase 存储上)时,图像会立即加载。因此,据我所知,firestore 工作得很好,但 firebase 存储链接加载速度非常慢。
有什么办法可以提高它的性能吗?我认为 640x480 图片 1.5-2 秒不太合适
Firebase Storage 不是 CDN,因此如果您的存储桶距离您太远,可能需要一段时间。我不确定你的640x480图像的大小,但 1-2 秒听起来还不错。我尝试首先从本地计算机下载图像219,457 bytes,然后从虚拟机实例(下载速度过快4000 Mbps)下载图像。虚拟机只需要0.5 seconds下载它(存储桶所在的同一区域),但我的计算机却在2-4 seconds.
在 firebase 托管上托管应用程序可以解决此问题吗?我看到 firebase 托管将其分发到全球 CDN
Firebase 存储和托管是两项独立的服务。托管提供网站资源,例如 HTML、JS 或您使用firebase deploy --only hostingCDN 上的命令部署的任何静态文件。
最好的选择是将 CDN 与 Firebase 存储结合使用。您可以使用存储桶设置 Google Cloud CDN。我刚刚比较了使用和不使用 CDN 的 Firebase 存储的下载时间,差异如下:
没有 CDN:
使用 CDN:
此外,即使您已从 Firebase 存储中删除图像,您的 CDN 提供商也可能会继续提供缓存版本,因此请确保提供商具有某种 API 来从缓存中清除特定文件。
编辑:
一旦图像被缓存在边缘,任何人都可以在没有?token=参数的情况下访问它,这违背了拥有它的目的和安全规则。尽管安全规则只是阻止随机用户获取下载 URL,并且如果授权用户与其他人共享图像,则不会访问图像,但这在某些情况下可能并不理想。
一种解决方法是使用这些令牌 (UUID) 作为图像名称(例如img_9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d.png),但除非重新上传图像(使用新令牌重命名图像),否则无法撤销这些标记。
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |