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

如何让AppSync在缓存时尊重字段选择规则?

AppSync 缓存对不同字段查询的响应行为

这是AppSync缓存机制里一个很典型的行为,我来给你拆解清楚整个逻辑:

  • 第一步:首次查询与缓存写入
    当你发送仅请求field1的GraphQL查询:

    { todoItems { field1 } }
    

    AppSync会调用你的Lambda数据源获取对应数据,得到响应后将这个完整结果存入缓存:

    { "todoItems": [ { "field1": "some data" } ] }
    
  • 第二步:缓存有效期内的新增字段查询
    在缓存还没过期时,如果你发送包含field1和field2的查询:

    { todoItems { field1 field2 } }
    

    AppSync会直接命中之前的缓存,不会重新调用Lambda。由于缓存的响应里并没有field2的数据,AppSync会自动将这个缺失的字段填充为null,最终返回的结果就是:

    { "todoItems": [ { "field1": "some data", "field2": null } ] }
    
  • 第三步:缓存过期后的查询
    等缓存过期后再发送包含field2的查询,AppSync会重新触发Lambda获取完整的数据集,这时就能返回包含正确field2值的结果了:

    { "todoItems": [ { "field1": "some data", "field2": "other data" } ] }
    

核心要点:AppSync的缓存命中逻辑默认是基于查询的唯一标识(包括操作名称、变量等),如果你的缓存键配置没有把字段选择纳入考量,那么即使后续查询的字段不同,也会命中同一缓存条目,导致缺失字段被填充为null,直到缓存失效才会拉取最新的完整数据。

内容的提问来源于stack exchange,提问作者Vitalii Kyktov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:52:42