При сборе всех критических стилей обычно учитывают только определенную область. Однако для сложных страниц может оказаться полезным добавить к критическим стилям все, что связано с общим layout’ом страницы, чтобы избежать долгих перерасчетов стилей и не ухудшить метрики Core Web Vitals.
Что если пользователь получает URL-адрес, который ведет на страницу, прокрученную до середины, но CSS для этой области еще не загрузились? В этом случае часто
скрывают некритичный контент, например, с помощью opacity: 0; в заинлайненом CSS, а потом изменяют это значение на opacity: 1 в догружаемом CSS-файле. У этого способа есть существенный недостаток: пользователи с медленным соединением могут вообще не увидеть содержимое страницы. Поэтому лучше всегда оставлять контент видимым, даже если он неправильно оформлен.
Размещать критические стили (и
другие важные асеты) в отдельном файле на корневом домене
иногда оказывается выгоднее чем их инлайнить. Причина в кешировании. Chrome, например, заранее устанавливает второе соединение с корневым доменом, поэтому нет необходимости переиспользовать старое для критического CSS.
Небольшое предостережение: c HTTP/2 вы можете хранить критические стили в отдельном файле и использовать для их доставки
server push. К сожалению, у такого подхода есть
некоторые проблемы, в том числе и с кешированием (пример есть на 114 слайде презентации
Hooman Beheshti’s). В результате, используя такой подход, вы можете
ухудшить производительность вашей страницы. Не удивительно, что Chrome планирует
отказаться от поддержки server push в будущем.