Script Parsing Time

Материал из Энциклопедия интернет-маркетинга MarketWiki

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 - структуру, представляющую синтаксис программы.

Процесс парсинга:

  1. Токенизация (лексический анализ). Исходный код разбивается на токены (ключевые слова, идентификаторы, операторы, литералы).
  2. Синтаксический анализ. Токены группируются в соответствии с грамматикой языка, строится AST (Abstract Syntax Tree).
  3. Проверка синтаксиса. Выявляются синтаксические ошибки (при наличии).

Парсинг блокирует выполнение скрипта: пока код не разобран, компиляция и выполнение не могут начаться. На время парсинга основной поток браузера занят, что может вызывать задержки отрисовки и взаимодействия.

Сравнение этапов обработки скрипта

[править]
Этап Описание Влияние на пользователя
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(), а также очень длинные строки.

Связанные термины

[править]