TGViewer
Senior Software Vlogger Senior Software Vlogger @seniorsoftwarevlogger · 22.8K subscribers
Post #1820 17.6K
Вы знаете Progressive JPEG, но вы знаете о Progressive JSON?

Пару дней назад Дэн Абрамов написал статью объясняя новый тип стриминга данных с сервера. Обычно, когда мы стримим данные, мы стримим строчку за строчкой или отправляем какие-либо инкрементальные сообщения. Тут предлагается отправлять json используя обход дерева в ширину. Ну, те самые ненужные структуры данные и алгоритмы.

Т.е. сперва вы поймаете верхнюю структуру с ключами-заглушками, которые поступят позже:


{
"imageUrl": "$1",
"title": "$1",
"comments": "$3"
}


Вот эти $1, $2, $3 это как раз те заглушки, которые обработаются на клиенте как промис. Это позволяет разбить все данные на куски и отправлять их по мере готовности и оптимизировать запросы на стороне сервера. Таким образом, мы можем начать заполнять данные на странице по частям, а не ждать пока все загрузится. С одной стороны эти запросы можно разбить на несколько частей и грузить параллельно, но что если нам для каких-то целей удобнее грузить что-то одним потоком?

Оказывается именно так и подгружаются серверные компоненты в React. Приложение тоже своего рода дерево. Дэн Абрамов объясняет, что Progressive JSON позволяет загружать данные по частям, что делает загрузку более эффективной и отзывчивой. При этом мы всегда знаем, какие компоненты еще не загрузились и можем отобразить их в виде заглушек.

Понятное дело, что тут они оптимизирут отправку иерархической структуры данных по сети. Я подозреваю, что оно ляжет в один поток QUIC. Т.е. если бы можно было разбить этот стрим на несколько, то quic смог бы тянуть несколько потоков? Я понимаю, что смешиваю транспортный уровень и уровень приложения, но все же.

В любом случае интересно, мозги шуршат.

https://overreacted.io/progressive-json/
overreacted.io Progressive JSON — overreacted Why streaming isn't enough.
  • 👍 69
  • ❤ 20
  • 😁 8
  • 👀 5
  • 🤣 3
  • 😢 1
More from @seniorsoftwarevlogger
  1. Oct 10, 2026Тестим Unlokee на Андроиде Вступайте в гугл группу и присоединяйтесь к тесту 😎 Без членст…
  2. Oct 10, 2026Приключения в экосистеме ТОН В то время как Ачиватор уже выдает баллы за мемы на @git_reba…
  3. Oct 9, 2026Полный редизайн Unlokee! Тактильная головоломка на ловкость. Вскрывай замки на ощупь и на…
  4. Sep 28, 2026Как работает ачиватор в базе: вы комментируете - вас лайкают - бот начисляет вам очко - вы…
  5. Sep 27, 2026Помогите протестировать ачиватора! Ачиватор - система поощрения чатеров в телеграме. Админ…
  6. Sep 27, 2026У меня все больше проектов - поэтому Amber тоже теперь умеет крутить несколько дашбордов.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →