Когда использовать apollo-link-state и когда использовать apollo-cache-inmemory - PullRequest
0 голосов
/ 31 мая 2018

Мы медленно добавляем graphql к нашему реактивному проекту и заменяем существующую интеграцию с избыточностью.Поэтому я пытаюсь понять кэширование в apollo и увидел две вещи.

  1. apollo-cache-inmemory (https://www.npmjs.com/package/apollo-cache-inmemory)
  2. apollo-link-state (https://github.com/apollographql/apollo-link-state)

У нас есть запрос для вызова списка приложений на домашней странице, и этот список приложений будет использоваться на какой-то другой странице. Поэтому я попробовал один вариант - вызвать список запросов приложений в родительском контейнере ииспользуйте client.readQuery на дочерних страницах, так что вызов к серверу graphql будет происходить только в контейнере, а на других страницах он будет вызываться из кэша. Но я видел несколько постов, касающихся использования apollo-link-состояние в сценариях, подобных этому. Итак, какой метод лучше использовать здесь и когда использовать apollo-cache-inmemory и когда использовать apollo-link-state?

1 Ответ

0 голосов
/ 01 июня 2018

Вы не должны сравнивать apollo-cache-inmemory напрямую с apollo-link-state.apollo-cache-inmemory используется для обработки кэширования на Apollo Client, вам не нужно писать какой-либо специальный код, чтобы он работал (кроме простого указания Apollo Client на его использование).Любые данные, которые вы извлекаете из api, кэшируются автоматически.

apollo-link-state однако предназначен для кэширования на стороне клиента, например, NetworkStatus браузера или текущей активной вкладки.Состояния, которые обычно не отправляются обратно на внутренний сервер.

Итак, вам нужно только подумать, нужно ли вам кэширование на стороне клиента или нет.В большинстве случаев, которые я видел, проект в конечном итоге использовал бы оба.

...