Как ускорить первую загрузку
Вопрос
Первая загрузка сайта занимает 4 секунды у пользователей из регионов. Как бы ты искал, где теряется время, и что делал?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Измерить: Navigation Timing и RUM по этапам (DNS, connect, TLS, TTFB, загрузка, рендер), Lighthouse и WebPageTest
Сеть: CDN ближе к пользователю, HTTP/2 или HTTP/3, preconnect к сторонним доменам
Сервер: медленный TTFB → кеширование, отдача статики с CDN, 103 Early Hints
Ресурсы: Brotli, меньше JS, code splitting, оптимизированные картинки с размерами
Рендер: критический CSS, defer для скриптов, без блокирующих сторонних скриптов
Что могут спросить следом
- Как понять, что проблема в TTFB, а не во фронте?
- Чем помогает HTTP/3 на мобильных сетях?
- Что такое 103 Early Hints?
Разбор
Сначала измеряю, а не угадываю. Navigation Timing в RUM разбивает загрузку на DNS, соединение, TLS, ожидание ответа и загрузку, и видно, где именно у региональных пользователей растёт время. Если долго соединение, значит далеко до сервера: ставлю CDN с точками ближе к людям, включаю HTTP/3, у которого рукопожатие короче и нет блокировки при потерях на мобильной сети, добавляю preconnect к сторонним доменам. Если большой TTFB, проблема на сервере: кеширую HTML или его части, отдаю статику с CDN, можно отправить 103 Early Hints, чтобы браузер начал грузить CSS, пока сервер думает. Если долго после ответа, смотрю на вес и порядок ресурсов: Brotli, меньше JavaScript и деление на чанки, современные форматы картинок с заданными размерами, критический CSS в head, скрипты с defer. После каждого шага сверяю метрики LCP и TTFB по тем же регионам.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Что происходит при вводе адреса»
- async и defer
- Почему CSS блокирует рендер
- DOMContentLoaded и load
- Что попадает в render tree
- Порядок DNS-резолвинга
- ALPN
- Critical rendering path
- TTL в DNS