Уменьшить размер данных, возвращаемых из API через GraphQL? - PullRequest
0 голосов
/ 18 января 2019

Мы используем одну конечную точку, которая возвращает огромный размер данных, и иногда страница загружается за 5-10 секунд. У нас нет контроля над API бэкэнда. Есть ли способ уменьшить размер, который будет загружен из API? Мы уже включили сжатие. Я слышал, что GraphQL может создать схему данных, прежде чем запросить ее. Поможет ли GraphQL в этом случае?

1 Ответ

0 голосов
/ 18 января 2019

GraphQL может помочь, предполагая:

  • Ваш существующий запрос API делает много перегрузок, и вам на самом деле не нужен хороший кусок возвращаемых данных
  • У вас есть ресурсы для настройки дополнительного сервера GraphQL, который будет служить прокси-сервером для конечной точки REST
  • Ответ конечной точки REST может быть смоделирован как схема GraphQL (это может быть сложно или просто).невозможно, если ключи объекта в возвращенном JSON могут быть изменены)
  • Кэшируется ответ от конечной точки REST
  • Дополнительная задержка, добавленная добавлением сервера GraphQL в качестве посредника, достаточно смещенауменьшением размера ответа

Ваш сервер GraphQL должен будет выставить запрос, который сделает запрос к конечной точке REST, а затем кеширует его на стороне сервера.Кэшированный ответ будет использоваться при последующих запросах к серверу, пока не истечет срок его действия или он не станет недействительным.Кэширование ответа является ключевым, иначе простое проксирование запроса через сервер GraphQL просто замедлит все ваши запросы, поскольку получение данных из конечной точки REST на сервер само по себе займет примерно столько же времени, сколько ваш запрос в настоящее время.

Затем GraphQL можно использовать для сокращения размера вашего ответа двумя способами:

  • Не запрашивая определенные поля, которые не нужны вашему клиенту (или опуская эти поля из вашегосхема в целом)
  • Путем введения нумерации страниц.Если причиной раздутого размера вашего ответа является огромное количество возвращаемых записей, вы можете добавить нумерацию страниц в свою схему и возвращать меньшие куски из общего списка записей по одной за раз.

Примечание: последнее может быть значительной оптимизацией, но может быть и сложным, если ваш кэш часто аннулируется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...