Парсинг, отрисовка и потоковая обработка большого JSON
Парсинг часто не является узким местом; отрисовка и копирование являются. Оптимизируйте по четырём слоям «парсинг → обход → отрисовка → передача», чтобы ваши усилия не были потрачены впустую.
JSON-файл в десятки мегабайт может подвесить главный поток, а тщательно созданный JSON — пробить сервис; эта категория охватывает и пропускную способность, и защиты.
Статей: 6Парсинг часто не является узким местом; отрисовка и копирование являются. Оптимизируйте по четырём слоям «парсинг → обход → отрисовка → передача», чтобы ваши усилия не были потрачены впустую.
JSON.parse сам по себе безопасен; опасность в том, что происходит после него: глубокое слияние, присваивание по пути, встраивание в HTML, неограниченные глубина и размер.
Минификация срезает 30–50% с сырого JSON, но gzip стирает большую часть этой выгоды. Измеренные числа по реальным формам, плюс четыре случая, когда минификация делает хуже.
JSON-файл в 10 МБ может стать 30–50 МБ в куче V8. Узнайте, сколько реально стоят строки, объекты и числа, как снять базовый уровень через process.memoryUsage и когда помогает потоковая обработка.
Подвисание начинается при создании узлов DOM, а не при прокрутке. Рассматривает отрисовку со свёрнутостью по умолчанию, виртуальные списки, подсветку поиска и границы Worker, с метриками.
JSON-выгрузки в десятки мегабайт часто подвешивают текстовые редакторы и онлайн-инструменты, хотя сам парсинг занимает сотни миллисекунд. Мы измерили время и память на каждом этапе на выборке 45 МБ и 500 000 записей, показали, что реальная стоимость — это количество строк и узлов, и составили таблицу выбора инструментов по размеру файла: онлайн-просмотр, командная строка, потоковая обработка и десктопное приложение.