gpt4 book ai didi

angular - Firebase:减少大型集合的读取次数

转载 作者:行者123 更新时间:2023-12-03 20:26:21 26 4
gpt4 key购买 nike

经过大量搜索,在阅读 Firebase 集合时,我发现了很多“不该做什么”(主要示例是 3 万美元的账单事件),但是我正在努力寻找合适的解决方案我们的问题。

我们的网站包含产品目录。该目录由名为“products”的 firestore 集合填充,其 JSON 结构为:

"products"{
"productId"{
"name":
"price":
"brand":
...
}
}

为了加载集合,我使用以下内容:
this.products = this.db.collection('products').valueChanges({idField: 'productID'});

在高峰期,我们预计该系列将包含多达 2000 种产品。我担心的是,随着网站规模的扩大,这将变得非常昂贵。我注意到每次导航到“目录”页面时,它都会再次加载集合。因此,举一个有点难以想象的例子,如果页面在一天内加载 5000 次并加载了完整的集合,就像目前那样,它将导致 10,000,000 次文档读取(至少)。

我相信一定有更好的方法来做到这一点,但是,我似乎无法破解它。

非常感谢任何有关解决此问题并降低成本的更好方法的建议。

最佳答案

您主页的平均访问者会看到多少产品?假设您在折叠上方展示 5-10 个产品,因此在它们必须滚动之前。如果 50% 的访问者立即离开页面(对于这种所谓的反弹来说,这是一个相当乐观的值),您只需要每天加载 5,000 次访问 * 10 种产品 = 50,000 次阅读即可满足一半的访问者。

而留在您网站上以查看更多内容的 50% 访问者实际上是值得加载更多数据的人。但我还是会考虑优化

加载所有 2,000 种产品对于绝大多数访问者来说可能是浪费,这就是为什么 Doug 建议对数据进行分页(或者现在更常见:使用无限 ScrollView 加载它们)。

更有效的替代方法是将最初的 10 个产品存储到单个文档中,基本上存储预先聚合的内容。如果您这样做,您只需为每位访问者阅读一份文档即可获得初始产品。然后您可以像以前一样按需加载其余文档。

您可以进一步采用这种方法并预先聚合多种类型的内容,例如每个类别最受欢迎的产品,特定产品的相关产品等。虽然这些步骤中的每一个都使生成内容变得更加棘手,但如果您获得更多访问者,您就可以轻松赚回它。

要了解使用 Cloud Firestore 时的所有相关信息和许多其他注意事项,我推荐观看精彩视频系列 Getting to know Cloud Firestore .

关于angular - Firebase:减少大型集合的读取次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60535751/

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