gpt4 book ai didi

firebase - 应将哪些 Firebase 存储引用保存到 RTDB/Firestore?

转载 作者:行者123 更新时间:2023-12-04 01:39:15 24 4
gpt4 key购买 nike

我正在尝试确定在实时数据库或 Cloud Firestore 等直接读取数据库中引用 Firebase 存储(谷歌云存储)文件的最佳方式。由于对该数据库的读取操作无法从可以发出 token 和缓存图像 URL 的后端中获益,因此我不清楚存储这些引用的最高效方法是什么。

我提出了几个选项,但没有一个是明显的赢家。

  1. 将类似/images/foo.jpg 的路径存储到数据库,并使用 Storage Client SDK 通过 storage.bucket().getDownloadURL("/images/foo.jpg").

    优点:安全且简单。

    缺点:对要显示的每张图像进行网络调用会大大影响性能。

  2. 存储标记化路径,例如 https://firebasestorage.googleapis.com/v0/b/storage-bucket-823743.appspot.com/o/images%2Ffoo.jpg?alt=media&token= c6da1e33-f3ff-41e2-a6f0-bdb475a2f6d9 具有超长 TTL。

    优点:客户端无需额外获取。

    缺点:长字符串存储在昂贵的 RTDB 中。如果该 token 被错误地撤销了怎么办?数据库现已损坏。

  3. 将类似/images/foo.jpg 的路径存储到数据库并使用公共(public)存储规则。重构为自定义静态 URL,如 https://firebasestorage.googleapis.com/v0/b/storage-bucket-823743.appspot.com/o/images%2Ffoo.jpg?alt=media

    优点:使用小型数据库、无需额外的客户端提取、显式公共(public)访问、不会丢失 token 。

    缺点:URL 编码非常不稳定,存储可能会更改它们的 URL 格式,我们就不走运了。

所以,这些是我提出的选项,而且可能还有更多选项。有关如何解决此问题的任何建议?这个问题是独一无二的,因为 Firebase 数据库没有自定义服务器的优势来处理 token /缓存层来解决这个问题。

最佳答案

没有单一的“最佳方式”来存储这些路径。这完全取决于您的用例、您的偏好以及您实现它的环境。

我通常使用:

  1. 如果我需要访问要保护的文件,我会存储图像路径(就像在您的 #1 中一样),然后使用 Firebase SDK 访问该文件。
  2. 如果我不需要访问要保护的文件,我会存储图像路径下载 URL。这样我就可以根据路径轻松找到图像,并在非安全客户端中使用下载 URL。

你提到的缺点对我来说根本没有影响。我建议您采用类似的方法,并在问题实际发生时报告。

关于firebase - 应将哪些 Firebase 存储引用保存到 RTDB/Firestore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com