You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore安全规则get()查询缓存机制及读取成本问询

Firestore安全规则中get()的缓存范围与读取成本问题

我想明确Firestore在执行单个查询或跨查询时,安全规则中get()查找的缓存范围。官方文档虽提及存在缓存,但未说明缓存触发的具体场景及查询产生的读取成本细节。

核心问题:在一次请求多个文档的查询中,若安全规则多次调用针对同一文档的get(),是否总会对该get()结果进行缓存?

场景示例

数据结构

images集合

"imgxyz": {
  "name": "img1",
  "url": "xyz.com",
  "snapshot":"bbb",
  "project": "aaa"
},
"imgzyx": {
  "name": "img2",
  "url": "zyx.com",
  "snapshot":"bbb",
  "project": "aaa"
}

users集合

"uid1": {
  "userName": "img2",
  "email": "zyx.com",
  "projects": ["aaa","bbb"]
}

安全规则

service cloud.firestore {
  match /databases/{database}/documents {
  
    function canViewImage() {
        let userProjects = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.projects;
        let requestedDocProject = request.resource.data.project;
        return requestedDocProject in userProjects;
    }
  }
}

具体疑问

  • 若执行查询.where("snapshot", "==", "bbb")且匹配数千个图片文档,从安全规则成本角度看,用户文档的get()查找仅产生1次额外读取,还是与匹配的图片文档数量相等?
  • 若连续执行单个文档查询,如先.get("imgxyz")再.get("imgzyx"),缓存机制会如何运作?

注:已查阅相关讨论,但认为未充分解释安全规则缓存的触发时机及原因。

内容的提问来源于stack exchange,提问作者Patrick Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:33:22