Если у вас заканчивается память на сервере, возможно, пора обновить. Если у вас сейчас недостаточно памяти, представьте, что произойдет, если несколько пользователей поразят вашу конечную точку.
Единственный другой способ обойти эту конкретную проблему - разбить ваш запрос на несколько небольших запросов. Тем не менее, ваш предложенный подход страдает от пары проблем:
- В итоге ваш сервер и база данных получат значительно больше запросов
- Ваш пользовательский интерфейс может загружаться дольше, в зависимости от того, требуется ли немедленная обработка запрошенных данных
- Обработка сценария в случае сбоя одного из ваших запросов или попытки повторить неудачный запрос может быть сложной задачей
Вы уже предложили добавить нумерацию страниц, и я думаю, что это был бы гораздо лучший способ разбить ваш большой запрос на более мелкие. Пагинация не только обеспечивает лучший пользовательский опыт, но и устанавливает ограничение на размер страницы, что позволяет эффективно ограничивать размер данного запроса.
Еще одна опция, которую вы можете рассмотреть, - это использование отложенных запросов . Эта экспериментальная функция была добавлена специально для дорогих запросов. Сделав одно или несколько полей для типа Note
отложенным, вы фактически вернете для них значение null вначале, а их значения будут отправлены во втором ответе «patch» после того, как они окончательно разрешатся. Это прекрасно работает с полями, которые требуют больших затрат, но также может помочь с полями, которые возвращают большой объем данных.