Files
2026-07-31 22:26:56 +03:00

7.2 KiB
Raw Permalink Blame History

Июнь 2027 — техническая вычитка производительности

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

Статья Body без источников Практический результат
editorial-2027-06-practice-performance-capstone 5 632 локальный сервер fast/slow и разделение TTFB/HTML
editorial-2027-06-mechanism-performance-capstone 5 275 чтение Resource Timing по инициатору и потребителю
editorial-2027-06-field-performance-capstone 5 452 локальная серия из 20 замеров, median и p95

Проход 1 — факты, пример и источники

Статья До После Причина
Practice Общая задержка страницы могла смешивать TTFB и визуальную готовность. Добавлено различие TTFB, DOMContentLoaded, FCP и LCP; локальный сервер измеряет только HTTP-участок. Не выдавать серверный замер за пользовательскую метрику.
Mechanism Длинная полоса waterfall трактовалась как причина. Добавлены initiatorType, потребитель ресурса и правило для отсутствующего renderBlockingStatus. Время ресурса не доказывает, что экран его ждал.
Field Среднее и p95 описывались без разделения режимов кэша. Добавлена проверка cold/warm cache и сохранение сырых значений вместе с размером выборки. Сделать сравнение условий воспроизводимым.

Проверены первичные источники:

  1. W3C Navigation Timing Level 2, Working Draft, 25 February 2026. Использован для временных меток навигации. Граница: draft не задаёт пороги качества и не сообщает значения конкретного браузера.
  2. W3C Performance Timeline, Candidate Recommendation Draft, 21 May 2025. Использован для PerformanceEntry и PerformanceObserver. Граница: документ не гарантирует одинаковую поддержку entry во всех движках.
  3. W3C Resource Timing, Candidate Recommendation Draft, 20 April 2026. Использован для времени и размеров ресурсов. Граница: кросс-доменные поля зависят от политики браузера и заголовков.

Все три датированные страницы отвечают HTTP 200. Черновой статус W3C назван в источнике и не превращён в факт о приложении.

Проход 2 — структура, голос и плотность

Статья До После Причина
Practice Текст мог читаться как список метрик. В начале оставлен один вопрос — «какой участок задерживает экран» — и для каждого действия добавлена цена. Сохранить техлидский компромисс вместо каталога терминов.
Mechanism Waterfall, CSS и script были смешаны в одном объяснении. Добавлены отдельные блоки про initiator, порядок defer/async, размер и зависимость. Читатель видит механизм до рецепта.
Field p95 появлялся раньше описания условий. Протокол перенесён перед кодом: URL, commit, browser, cache, повторы, метрика. Число получает вход и единицу измерения.

Прагматичная речь проверена по формуле «симптом → измерение → изменение → ограничение». Общие оценки удалены; в тексте остались измеряемые участки, условия и ожидаемый результат.

Проход 3 — визуал, доступность и повторы

Статья До После Причина
Practice Схема не отделяла сервер от блокирующих ресурсов. SVG стал временной линией TTFB → HTML → CSS/JS → Paint; alt повторяет эту границу. Рисунок поддерживает ключевое различие статьи.
Mechanism Визуал не показывал потребителя ресурса. SVG-матрица получила колонки «ресурс, инициатор, время, ждёт, действие». Сократить визуальное чтение waterfall до проверяемых полей.
Field Цикл замера не показывал p95 и изменение одного фактора. SVG показывает условия, повторы, p95 и возврат к одному фактору; подпись предупреждает о raw distribution. Не сводить измерение к одной цифре.

xmllint --noout и SVG safety scan прошли для трёх файлов. Sharp отрендерил 375×240, 375×250, 375×250; подписи, таблицы и карточки читаются без горизонтального скролла. Все изображения имеют русские title, desc, HTML alt и figcaption.

Итоговые проверки

  • node --check scripts/upgrade-2027-06.mjs — PASS.
  • node scripts/upgrade-2027-06.mjs --verify-fixture — PASS, 7/7.
  • npm run audit:draft -- scripts/upgrade-2027-06.mjs — PASS, 3/3 exact slugs.
  • Три извлечённых примера запущены локально: серверный замер, browser timing snippet в Node-совместимой среде и p95 — 3/3.
  • Сквозное сравнение 349 материалов, 4 176 сравнений, sources исключены, code включён; совпадений — 0.