GraphQL是否具有与REST相同的缓存能力

Jan*_*mes 6 rest caching graphql

我们正在构建一个请求很多的API,现在考虑使用GraphQL,REST或REST和GraphQL的组合.我们喜欢前端可以决定的GraphQL方法,返回哪些数据并查看其优点.但另一方面,由于我们存储的数据类型(产品和产品配置),我们担心缓存.目前我们看到以下选项:

  • 仅使用GraphQL:允许我们加快前端开发,并为我们的API提供更大的灵活性,以便将来实施.但是,通过大量的产品,我们希望使用基本的http缓存功能和我们的CDN.

  • 仅使用REST:允许我们在每个请求上使用标准http缓存,但每个前端请求都需要一个已定义的端点.

所以基本上我想知道GraphQL的缓存能力是否与REST相同?


作为一个加号我们考虑组合它.原因是我们有一个后端缓存来缓存来自后端系统的数据:

  • 结合两者:想法是在REST端点后面有一个产品JSON product/1,它将提供产品数据和所有配置.然后将其保存在我们的后端缓存中.然后,前端开发人员可以使用GraphQL来整理特定视图所需的配置部分(例如:product/1?query = SomeGraphQLQuery').因此,REST-Endpoint用于服务器缓存,而GraphQL用于客户端缓存.

这种方法在'GraphQL'世界中是否有意义,还是只是一个无用的抽象层并没有带来改进?

Ion*_*him 0

缓存、服务器端和客户端有多种解决方案。我不认为 REST 在这里有优势......

您可以让解析器缓存数据并实现 pubsub 以了解何时需要清除数据,您也可以在客户端上进行某种缓存。

没有理由将两者结合起来。我觉得真正的问题不是你是否可以使用 GraphQL 成功缓存,而是“哪种方式可以做到这一点”?