中继缓存如何工作?

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 服务器进行的声明性查询和变更将在服务器上找到该数据,通过该唯一标识符将其与您的前端缓存进行比较,并仅更新差异。你可以把它想象成一个版本控制你的前端数据,由这个称为中继缓存的引擎管理。

【讨论】:

以上是关于中继缓存如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

QML:如何通过拖放重新排序中继器项目?里面有一些工作代码

当我在服务器端更新架构时,中继/GraphQL 架构缓存未更新

如何在 azure wcf 中继中处理双工 wcf

在获取新数据时在 react-native 应用程序上使用中继缓存数据

如何创建DHCP的中继代理

Axure RP 9 中继器原理——添加行