Я попытался настроить полный кэш ответов на запросы GraphQL с помощью apollo-server v2, но обнаружил, что он недостаточно хорошо справляется с сокращением сетевых запросов.
То, что мне нужно, я думаю, называетсякэш частичного запроса.
Рассмотрим следующую схему:
type Post @cacheControl(maxAge: 240) {
id: Int!
title: String
comments: [Comment]
}
type Comment @cacheControl(maxAge: 50) {
id: Int!
title: String
text: String
}
При запросе { post(id: "1") { id, title, comments } }
Я не хочу повторно отправлять сообщение, если прошло менее 240 секунд.При полном ответе на запрос GraphQL весь запрос будет повторно выполнен на основе самого низкого значения maxAge.
Здесь я надеюсь, что кеш частичного запроса придет на помощь.
К сожалению, здесь говорится https://www.apollographql.com/docs/resources/faq/#what-kinds-of-cache-should-i-set-up тот кеш частичного запроса может быть реализован только с помощью redis / memcached и только при использовании источников данных.
Так как мои сервисы являются сервисами gRPC, а не REST, я не могу использовать источники данных - и в идеале я бы предпочелесли это было возможно без источников данных.
Так что, если возможно, как я могу реализовать кеш частичного запроса с Apollo Server v2, без источников данных.И если это невозможно, как я могу реализовать источник данных gRPC с частичным кешем запросов?
Можно ли как-то изменить это: https://github.com/apollographql/apollo-server/blob/master/packages/apollo-server-plugin-response-cache/src/ApolloServerPluginResponseCache.ts, чтобы вы все еще могли управлять им с помощью @cacheControl, нодля частичного кеширования запросов вместо кеширования полных запросов?