【问题标题】:Why to cache graphql fields on server. ( apollo-server )为什么要在服务器上缓存 graphql 字段。 (阿波罗服务器)
【发布时间】:2022-01-18 12:02:50
【问题描述】:

示例(来自 apollo-server):

type Post {
  id: ID!
  title: String
  author: Author
  votes: Int @cacheControl(maxAge: 30)
  comments: [Comment]
  readByCurrentUser: Boolean! @cacheControl(maxAge: 10, scope: PRIVATE)
}

我不明白这在哪里有用,请您提供一些示例。

【问题讨论】:

    标签: node.js graphql apollo apollo-server


    【解决方案1】:

    想象一下,当一个字段的值需要一些时间来计算并且该字段的值很少更改(例如纳斯达克的股票数量)时,缓存该字段将提高涉及该字段的查询性能,因为从缓存中获取其值的时间远快于计算其值所需的时间。

    那么用户是否无法获得该字段的最新实际值?是的。但是如果可能性很低,即使他得到过时的值,业务也可以容忍,那么问题不大,只是性能和强一致性之间的权衡。

    另外,如果你不能容忍用户得到一个过时的值,你可以考虑在某些请求更新该字段的值时使相关缓存失效。 (例如在 IPO 上市日)

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 2019-02-08
      • 2020-10-18
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 2020-10-04
      • 2021-10-28
      相关资源
      最近更新 更多