首页 > 解决方案 > 计算每个用户的 Firebase 存储总使用空间的可靠方法

问题描述

我正在尝试找出一种方法来保证用户上传的文件大小从网络客户端到 Firebase 存储的正确计数。

核心要求如下:

到目前为止,方法是这样的:

  1. 我的网络应用程序的用户可以上传多个文件
  2. 这些文件是使用 firebase Web 客户端 sdk 上传的
  3. 在我收听的服务器functions.storage.object().onFinalize()上获取每个文件的文件大小
  4. 然后我在 Firestore 中更新了一个专用文档以将新大小添加到总数中(我们称之为totalStorageSizeDoc

这种方法解决了安全性和可扩展性,但我在这里看到的问题是,当用户上传一堆足够小的文件时,这很容易functions.storage.object().onFinalize()在 1 秒内触发大量文件,这对于写入来说“不难但仍然”是一个限制firestore 中的操作。此时,写入totalStorageSizeDoc也将执行得太快,并有拒绝其中一些写入的风险。

有没有一种方法可以轻松地将写入队列中的写入onFinalize()以确保totalStorageSizeDoc不会不堪重负?还是我应该采取完全不同的方法?也许有任何最佳实践来计算我错过的已用存储大小?

非常感谢任何建议。

标签: firebasegoogle-cloud-firestoregoogle-cloud-functionsfirebase-storage

解决方案


最简单的做法是为您的函数启用重试,这样如果它由于任何原因(如超过某个限制)失败,那么系统将简单地重试它,直到它成功。


推荐阅读