Как насчет этого 20 МБ JSON отклика? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть сборка API в django, она отправляет запрос данных с PostgreSQL и сериализатором в json.

Теперь эта длина содержимого API составляет 3 МБ (я использую gzip, истинный размер составляет 20 МБ)Время отклика обошлось мне примерно в 10 ~ 20 секунд.

Хочу спросить, правильно ли это исполнение?есть ли место для оптимизации, которое я могу сделать?

1 Ответ

0 голосов
/ 24 мая 2018

Если это занимает 10-20 секунд, это больше похоже на плохой дизайн API, однако я не знаю ваш вариант использования, поэтому не могу быть уверен.

Проверьте, можете ли вы сделать что-либо изрекомендации Кена.Вот еще несколько идей:

  • Разбиение на страницы - отличный способ разбить данные - если ваши данные можно разбить на логические части, DRF предлагает множество способовразбить наборы запросов на страницы.

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

  • Узнайте, можете ли вы использовать опцию etag, когда сервер отправляет 304 Not Modified, если ответ API не изменился между двумяпоследовательные вызовы API. DRF не поддерживает etags из коробки AFAIK, поэтому вам нужно будет найти обходной путь .

  • , так какВы упомянули данные в режиме реального времени, я предполагаю, что есть некоторая концепция потоковой передачи временных данных.Существуют интересные способы объединить клиентское кэширование + разбиение на курсоры нумерацию страниц, чтобы отправлять только «новые данные», которые вы можете исследовать.Это работает, только если выполнены два предварительных условия: Изменения в вашем API носят инкрементный и временный характер.

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