- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试确定在实时数据库或 Cloud Firestore 等直接读取数据库中引用 Firebase 存储(谷歌云存储)文件的最佳方式。由于对该数据库的读取操作无法从可以发出 token 和缓存图像 URL 的后端中获益,因此我不清楚存储这些引用的最高效方法是什么。
我提出了几个选项,但没有一个是明显的赢家。
将类似/images/foo.jpg
的路径存储到数据库,并使用 Storage Client SDK 通过 storage.bucket().getDownloadURL("/images/foo.jpg")
.
优点:安全且简单。
缺点:对要显示的每张图像进行网络调用会大大影响性能。
存储标记化路径,例如 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 被错误地撤销了怎么办?数据库现已损坏。
将类似/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 /缓存层来解决这个问题。
最佳答案
没有单一的“最佳方式”来存储这些路径。这完全取决于您的用例、您的偏好以及您实现它的环境。
我通常使用:
你提到的缺点对我来说根本没有影响。我建议您采用类似的方法,并在问题实际发生时报告。
关于firebase - 应将哪些 Firebase 存储引用保存到 RTDB/Firestore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193400/
我是一名优秀的程序员,十分优秀!