CSS и производительность сети
6
Перевод статьи CSS and Network Performance с сайта csswizardry.com, опубликовано на css-live.ru с разрешения автора — Гарри Робертса.
Несмотря на то, что сайт уже больше десяти лет называется «CSS-волшебство», за последнее время на нём не было ни одной статьи, связанной с CSS. Давайте я это исправлю, совместив две мои любимые темы: CSS и производительность.
CSS критически важен для отображения страницы — браузер не начнет рендеринг, пока не найдет, загрузит и распарсит весь CSS — поэтому крайне важно как можно скорее получить его на устройстве пользователя. Любая задержка на критическом пути скажется на нашей начальной отрисовке, заставив пользователя видеть пустой экран.
В чём главная проблема?
Собственно, вот почему CSS так важен для производительности:
- Браузер не может отобразить страницу до построения дерева отрисовки;
- дерево отрисовки получается из DOM и CSSOM вместе взятых;
- DOM — это HTML плюс любой блокирующий JavaScript, который на него влияет;
- CSSOM — все CSS-правила, применённые к DOM;
- с помощью атрибутов
async
иdefer
можно легко сделать JavaScript неблокирующим; - сделать CSS асинхронным намного сложнее;
- поэтому важно помнить, что скорость загрузки страницы определяется самой медленной таблицей стилей.