Firestore重复添加相同监听器时,规则中get操作会重复验证收费吗?
问题
此前在Stack Overflow提出过关于Firestore缓存与读取收费的问题,其中提到重复添加以下相同的监听器时,仅会按单次监听器收取数据读取费用:
db.collection("testCollection").onSnapshot(function(doc) {}); db.collection("testCollection").onSnapshot(function(doc) {});
但如果在该集合的安全规则中使用get操作,规则代码如下:
match /testCollection/{documentId} { allow list: get(/databases/$(database)/documents/users/$(request.auth.uid)).data.isAllowToReadTestCollection; }
请问:
- 规则会执行两次验证吗?
- 规则中的
get操作会被收取两次费用吗?
回答
Firestore会对重复的请求进行优化处理:
- 针对你添加的两个相同监听器,Firestore会将它们视为同一个请求的重复订阅,不会执行两次规则验证。
- 规则里的
get操作也只会执行一次,只会收取一次对应的文档读取费用。
这是因为Firestore会自动合并相同路径、相同认证上下文的重复请求,无论是数据读取还是规则验证环节,都会复用处理结果,避免重复执行和重复收费。
内容的提问来源于stack exchange,提问作者flutroid
相关产品推荐
相关产品推荐

