Script Parsing Time
Script Parsing Time (время парсинга скрипта) - это метрика производительности веб-страницы, измеряющая время, которое браузер затрачивает на разбор загруженного JavaScript-кода и построение абстрактного синтаксического дерева (AST) перед началом компиляции и выполнения.
Метрика используется в разработке и техническом SEO для диагностики проблем с производительностью, связанных с большим объёмом или сложностью JavaScript-кода. Например, браузер загрузил 500 КБ JavaScript-файла; на этапе парсинга он читает код, разбивает на токены, проверяет синтаксис, строит AST. Если этот процесс занимает 150 мс, то Script Parsing Time = 150 мс.
Парсинг является обязательным этапом обработки любого JavaScript-кода. Длительное время парсинга увеличивает INP (Interaction to Next Paint) и задерживает появление интерактивности страницы.
Кратко
[править]Script Parsing Time - это время разбора JavaScript-кода браузером. На этом этапе исходный текст преобразуется в структуру (AST), понятную для последующей компиляции. Долгий парсинг блокирует выполнение кода и ухудшает INP.
Как работает Script Parsing Time
[править]Парсинг - это этап между загрузкой скрипта и его компиляцией. Браузер читает строку кода, разбивает её на токены (лексер), затем строит AST - структуру, представляющую синтаксис программы.
Процесс парсинга:
- Токенизация (лексический анализ). Исходный код разбивается на токены (ключевые слова, идентификаторы, операторы, литералы).
- Синтаксический анализ. Токены группируются в соответствии с грамматикой языка, строится AST (Abstract Syntax Tree).
- Проверка синтаксиса. Выявляются синтаксические ошибки (при наличии).
Парсинг блокирует выполнение скрипта: пока код не разобран, компиляция и выполнение не могут начаться. На время парсинга основной поток браузера занят, что может вызывать задержки отрисовки и взаимодействия.
Сравнение этапов обработки скрипта
[править]| Этап | Описание | Влияние на пользователя |
|---|---|---|
| Script Loading Time | Загрузка файла по сети | Блокирует отрисовку, влияет на LCP |
| Script Parsing Time | Разбор кода в AST | Блокирует выполнение, влияет на INP |
| Script Compilation Time | Компиляция в байт-код | Блокирует выполнение, влияет на INP |
| Script Execution Time | Выполнение скомпилированного кода | Может блокировать UI, влияет на INP |
Где используется
[править]| Сфера | Применение |
|---|---|
| Веб-производительность | Диагностика причин медленной обработки JavaScript |
| Core Web Vitals | Влияет на INP и FCP |
| JavaScript-оптимизация | Уменьшение времени парсинга через минификацию и code splitting |
| Техническое SEO | Выявление страниц с избыточным JavaScript |
Как измерить Script Parsing Time
[править]- Chrome DevTools → Performance. На вкладке Summary в секции Scripting можно увидеть общее время обработки JS, включая парсинг.
- Performance API. Использование performance.measure() для пользовательских метрик.
- Lighthouse. В отчёте указывает на скрипты, блокирующие отрисовку (косвенно связанные с парсингом).
- Web Vitals. Длительные задачи (Long Tasks) часто включают парсинг больших скриптов.
Как оптимизировать
[править]| Метод | Описание |
|---|---|
| Уменьшение объёма кода | Удаление неиспользуемого кода (tree shaking), минификация |
| Code splitting | Разделение кода на небольшие чанки, загружаемые по необходимости |
| Отложенная загрузка | Загрузка некритических скриптов после того, как страница стала интерактивной |
| Упрощение синтаксиса | Избегание глубокой вложенности, сложных выражений, eval() |
Использование async/defer
|
Парсинг не блокирует отрисовку, если скрипты не синхронные |
Часто задаваемые вопросы
[править]Чем парсинг отличается от компиляции?
[править]Парсинг - это разбор кода и построение AST (абстрактного синтаксического дерева) - структуры, описывающей синтаксис программы. Компиляция - это преобразование AST в машинный код (байт-код или нативный код), понятный процессору.
Как уменьшить время парсинга?
[править]Необходимо уменьшить объём кода: удалять неиспользуемые библиотеки, применять минификацию, разбивать код на чанки (code splitting), загружать некритичные скрипты асинхронно (async/defer).
Влияет ли парсинг на SEO?
[править]Да. Долгий парсинг увеличивает INP (Interaction to Next Paint) - время отклика интерфейса на действия пользователя. INP входит в Core Web Vitals и является фактором ранжирования Google.
Какие конструкции замедляют парсинг?
[править]Глубокая вложенность функций и блоков, сложные выражения с множеством операторов, деструктуризация больших объектов, использование eval() и new Function(), а также очень длинные строки.
