2016-09-29 2 views
0

Я создаю службу с использованием сервера GraphQL. Он имеет сеансы и разрешения пользователя, как и любые другие обычные службы. Например, { viewer { friends { name } } } будет выглядеть по-разному для каждого сеанса пользователя.Лучшая стратегия кэширования содержимого GraphQL с разрешениями и авторизацией

Какова наилучшая стратегия кэширования таких результатов запроса GraphQL? Также обратите внимание, что поскольку это GraphQL, каждый запрос может выглядеть несколько иначе. Например, некоторым пользователю может понадобиться { viewer { friends { id name } } }, а id - дополнительное поле.

Есть ли размещенные решения для кеширования для GraphQL? Может ли кто-либо, использующий GraphQL в производстве, поделиться своими идеями?

+0

Проверьте это: https://www.reddit.com/r/django/comments/6q7ern/django_cached_page_generate_cache_key_for/?st=j634d554&sh=d28066e0 Они кэшировать запрос делается на graphql Посмотреть. Они могут предоставить дополнительную информацию. –

ответ

1

Если вы подножка graphql на JavaScript, вы можете использовать мощный утилита Facebook, Dataloader https://github.com/facebook/dataloader

Это может кэшировать и пакетной обработки ваших запросов.

Что касается запросов к кешированию, то DataLoader также может это сделать. Вам нужно только создать новый dataloader для каждого запроса. Более подробную информацию можно найти здесь https://github.com/facebook/dataloader#creating-a-new-dataloader-per-request

+0

Извините, может быть, я не был ясен. Я уже использую dataloader, но он по-прежнему работает на моем собственном сервере graphql и, следовательно, добавляет нагрузки на мой сервер. То, что я ищу, - это уровень кэша, который является внешним для моего сервера graphql, а не внутреннего. – Joon