109 lines
8.8 KiB
Markdown
109 lines
8.8 KiB
Markdown
# P18 · 2019-08 · Производительность первой загрузки
|
|
|
|
Статус: **принят в публикационный слой 31 июля 2026 года**. Он содержит
|
|
ровно три ревизии; registry применяет их по стабильному slug и сохраняет даты
|
|
и авторов базового архива.
|
|
|
|
- <code>editorial-2019-08-practice-frontend-performance</code>;
|
|
- <code>editorial-2019-08-mechanism-frontend-performance</code>;
|
|
- <code>editorial-2019-08-field-frontend-performance</code>.
|
|
|
|
## Рамка и границы утверждений
|
|
|
|
Голос — М2, август 2019 года: автор уже уверенно работает с browser DevTools,
|
|
Network, trace и границами модулей, но не выдает поздние платформы
|
|
наблюдаемости, RUM-распределения или современные Core Web Vitals за личную
|
|
практику того периода. Речь в каждой статье следует маршруту «симптом →
|
|
причина → проверка → действие».
|
|
|
|
Материал использует Navigation/Resource/User Timing и документацию Chrome
|
|
DevTools. Позднейшая web.dev-терминология LCP используется только как
|
|
редакторская рамка для полноты диагностики: она не названа сделанным в 2019
|
|
году замером и не подставлена вместо browser trace.
|
|
|
|
В модуле есть один контролируемый Node fixture. Его числа
|
|
<code>network=180</code>, <code>javascript=165</code>, <code>css=90</code>,
|
|
<code>image=45</code> ms и <code>210000</code> bytes проверяют
|
|
классификацию четырёх владельцев. Fixture не открывает браузер, не делает
|
|
HTTP-запрос и не является production-значением или performance trace.
|
|
|
|
## Pass 1 — факты и техника
|
|
|
|
- Сверены официальные определения Navigation Timing и
|
|
<code>PerformanceResourceTiming</code>: navigation относится к документу,
|
|
resource — к отдельным ресурсам; поля cross-origin могут быть ограничены
|
|
без <code>Timing-Allow-Origin</code>.
|
|
- Утверждение о JavaScript не сведено к весу gzip-файла. Сеть, parse,
|
|
execute, DOM, style/layout, decode и paint названы разными участками,
|
|
требующими разной проверки.
|
|
- Для LCP использована современная официальная разбивка на TTFB, resource
|
|
load delay, duration и element render delay. В статьях ясно сказано, что
|
|
это способ проверить гипотезу при переиздании, а не подлинный отчёт автора
|
|
за август 2019.
|
|
- <code>responseEnd</code>, <code>img.complete</code>,
|
|
<code>DOMContentLoaded</code> и <code>load</code> нигде не выданы за
|
|
универсальный момент полезности экрана. У каждого есть описанное
|
|
ограничение.
|
|
- fixture проверяет только классификацию. В тексте не заявлены выполненные
|
|
trace, мобильный throttling, скриншоты или значения реального проекта.
|
|
- Вердикт: технические формулировки проверяемы и отделяют факт API от
|
|
лабораторного наблюдения и production-метрики.
|
|
|
|
## Pass 2 — редактура и голос
|
|
|
|
- В первых абзацах каждой статьи названы наблюдаемый сбой и цена ложной
|
|
правки: пустой первый экран, случайное сжатие hero или ложный вывод по
|
|
серверному ответу.
|
|
- Изложение не обещает «ускорить страницу» общими словами. Для каждой ветви
|
|
есть объект проверки: URL в HTML, момент старта на waterfall, участок
|
|
scripting, CSSOM/layout, decode и screenshot.
|
|
- Тон намеренно сдержан: автор предлагает короткие local experiments,
|
|
сохранение условий и обратимые изменения, а не приписывает периоду
|
|
SLO-платформу или точность современных отчётов.
|
|
- Все статьи проходят диапазон 5 000–15 000 знаков основного текста до
|
|
добавления таблиц, кода, SVG и списка источников; это дополнительно
|
|
проверяет модуль при импорте.
|
|
- Вердикт: текст прагматичен, технически плотен и не превращает сильный
|
|
заголовок в скромную заметку без раскрытия.
|
|
|
|
## Pass 3 — визуал и выпуск
|
|
|
|
- Практика получает схему четырёх дорожек: сеть, JavaScript, CSS и image.
|
|
Механизм получает граф зависимостей HTML, CSS, JavaScript и hero. Разбор
|
|
получает дерево диагностики от полезного screenshot к одному эксперименту.
|
|
- У каждого SVG есть <code>title</code>, <code>desc</code>, содержательный
|
|
alt в статье и подпись. Все схемы рассчитаны на вертикальное чтение на
|
|
узкой ширине, без скриптов, внешних изображений и raster-заменителей.
|
|
- Первый raster-render выявил обрезание длинных нижних подписей и заголовка
|
|
диагностики. Текст сокращён и перенесён; повторный рендер схем в 1 000 px
|
|
и 375 px подтвердил отсутствие обрезания, наложения или горизонтального
|
|
overflow.
|
|
- В каждой ревизии есть доступная таблица с <code>thead</code> и
|
|
<code>scope="col"</code>, код, нумерованный маршрут, ранняя постановка
|
|
проблемы и минимум две первичные/официальные ссылки.
|
|
- Production build, registry и <code>articles.json</code> намеренно не
|
|
запускались и не менялись: они относятся к отдельному интеграционному
|
|
ревью.
|
|
- Вердикт: пакет готов к независимому draft gate и только после него — к
|
|
отдельной интеграции.
|
|
|
|
## Выполненные проверки
|
|
|
|
| Проверка | Команда | Результат |
|
|
| --- | --- | --- |
|
|
| Node syntax | <code>node --check scripts/upgrade-2019-08.mjs</code> из <code>web/</code> | успешно |
|
|
| JSON-only CLI и import-safe export | <code>npm run audit:draft -- scripts/upgrade-2019-08.mjs</code> из <code>web/</code> | успешно: 11 958, 11 919 и 12 638 знаков body по gate |
|
|
| Controlled fixture | <code>node scripts/upgrade-2019-08.mjs --run-fixture</code> из <code>web/</code> | успешно: четыре владельца, 210 000 bytes, 480 ms как сумма самостоятельных fixture-длительностей |
|
|
| XML | <code>xmllint --noout public/assets/editorial/2019/frontend-loading-profile-2019.svg public/assets/editorial/2019/frontend-critical-path-2019.svg public/assets/editorial/2019/frontend-performance-diagnosis-2019.svg</code> из <code>web/</code> | успешно |
|
|
|
|
## Выпусковой вердикт
|
|
|
|
Черновой пакет прошёл независимые syntax, draft gate, fixture и XML-проверки.
|
|
После подключения registry основной редактор повторил strict audit: все три
|
|
slug прошли объём 11 958 / 11 919 / 12 638 знаков, figure, таблицы, код,
|
|
маршруты и источники. <code>npm run build</code> завершился с кодом 0 и
|
|
сгенерировал 374 статические страницы.
|
|
|
|
Выпусковой вердикт: **принят к публикации**. <code>articles.json</code> не
|
|
менялся; registry заменяет только редакционные поля по стабильному slug.
|