Самый эффективный способ отправки большого количества полезных данных веб-интерфейсу - PullRequest
1 голос
/ 13 апреля 2019

У меня есть сетка, которая загружает около 100 тысяч строк данных, что составляет около 20 МБ. Чтобы получить эти данные, мы сейчас делаем что-то вроде этого:

cursor.execute(sql)
data = cursor.fetchall()
return HttpResponse(data.json())

И затем мы будем использовать JSON.parse в JavaScript, чтобы затем загрузить эти данные в сетку. От конца к концу, что будет самым быстрым способом передачи этих данных из нашей базы данных в нашу сетку (с одной оговоркой, что мы не разрешаем запрос sql в коде javascript внешнего интерфейса)?

Возможные решения, о которых я подумал:

  • отправлять вещи как есть, без сжатия
  • gzip данные json (требуется почти ноль работы)
  • сжатие до lz4, затем распаковка в javascript (потребуется компиляция cpp в javascript)
  • использовать другой формат, такой как protobuf или пакет сообщений

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

(обратите внимание, что меня не интересует разбивка данных на куски, это очень специфический случай использования, когда пользователь запрашивает загрузку всех данных в HTML-таблицу)

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