中继缓存如何工作?
Posted
技术标签:
【中文标题】中继缓存如何工作?【英文标题】:How does relay cache work? 【发布时间】:2016-09-08 23:00:41 【问题描述】:我通读了中继缓存文档,但感觉很混乱。
谁能解释一下 primeCache 是如何工作的以及它应该/可以如何使用?
首先,我什至不能 100% 肯定缓存是在浏览器中还是在服务器端?我猜它在浏览器中,因为他们确实在谈论客户端缓存,对吗?
我也读过这个question,这让我更加困惑。它说
如果 Flux 存储需要访问服务器数据,它们可以使用 Relay.Store API 从服务器获取数据并从缓存中读取。
我不明白,如果它要从缓存中读取它,那它为什么需要从服务器获取数据?老实说,这没有逻辑。除非它真的是服务器缓存而不是浏览器缓存?此外,如果您查看有关 Relay.Store(与 primeCache 相关)的 Relay 文档,他们会说:
Relay Store 提供了一个 API,用于向服务器分派突变。
如果我理解正确的话,那些突变会改变服务器端的数据。这意味着他们确实通过商店查询服务器端。而且因为你使用 store 来访问 primeCache,这可能意味着缓存真的可以是服务器端 mm..
什么时候可以调用primeCache呢?如果缓存中没有任何内容而您调用它怎么办?然后它会从服务器获取结果吗?
请帮忙
【问题讨论】:
【参考方案1】:你已经掌握了它的要点。 Relay 背后的想法是,它可以帮助您“组件化”您的查询和突变,就像 React 对您的 html 所做的那样。 Relay 将您的 React 组件与该组件专门需要的组件结合起来,并将其以最佳方式呈现给您的前端应用程序。
现在,缓存通过将每条数据与唯一 ID 相关联来工作。您通过 Relay 对 GraphQL 服务器进行的声明性查询和变更将在服务器上找到该数据,通过该唯一标识符将其与您的前端缓存进行比较,并仅更新差异。你可以把它想象成一个版本控制你的前端数据,由这个称为中继缓存的引擎管理。
【讨论】:
以上是关于中继缓存如何工作?的主要内容,如果未能解决你的问题,请参考以下文章
当我在服务器端更新架构时,中继/GraphQL 架构缓存未更新