PageSpeed ​​Insights не соответствует стандартам

Google PageSpeed ​​предлагает добавить критический CSS в тег <style> в заголовке и отложить внешний CSS до конца HTML.

Это противоречит веб-стандартам путем встраивания CSS в HTML (которые должны быть разделены), а также создания FOUC при загрузке CSS. Видимость может быть оформлена так, чтобы показывать всю страницу за один раз после загрузки CSS, но это создает FOUC для всей страницы, что тоже не очень хорошо.

Нет никакой разницы в реальном времени между правильной загрузкой CSS с использованием <link> в заголовке и отложением ее на потом, поэтому нет реальной необходимости откладывать загрузку таблицы стилей. Для загрузки страницы по-прежнему требуется такое же количество времени. Зачем вам показывать пользователю страницу с наполовину стилизованной, если лучше просто отображать стилизованную страницу.

У меня такой вопрос: почему веб-гигант Google предлагает такие нелепые методы, которые не соответствуют стандартам и создают проблемы во время загрузки, такие как FOUC? Как будто люди, которые придумывают эти идеи, не имеют понятия о стандартах.


person nick-roberts91    schedule 21.11.2019    source источник


Ответы (1)


Вот несколько моментов, которые помогут лучше понять концепцию.

Это противоречит веб-стандартам, встраивая CSS в HTML (которые должны быть разделены).

Помещение правил CSS в заголовок документа в тегах <style> совершенно нормально и приемлемо, если оно служит определенной цели, как в случае, который вы описываете. В мире, где мы работаем с такими вещами, как styled-components и css-in-js, нет места для такого рода обобщений (имеется в виду «такие нелепые практики»)

а также создание FOUC, когда CSS загружает

Если вы правильно подготовили свой критический CSS, тогда должны быть все верхние правила для каждой точки останова, и не произойдет никакого верхнего FOUC. В остальной части страницы, если у вас есть хорошо оптимизированная страница, скорее всего, никому не удастся увидеть, как происходит FOUC. Это произойдет очень быстро и ниже видимого содержимого.

Нет никакой разницы в реальном времени между правильной загрузкой CSS с использованием a в заголовке и отложением ее на потом, поэтому нет реальной необходимости откладывать загрузку таблицы стилей.

В больших проектах файлы css не состоят из 10 правил CSS и имеют размер 2 КБ. У вас может быть несколько связанных css (или несколько файлов css) с правилами стиля для сотен компонентов, шаблонов и страниц, в то время как вам может потребоваться только несколько правил для вашего верхнего содержимого. Когда браузеры натыкаются на связанный файл css, он немедленно останавливает рендеринг страницы, отправляет запрос на конкретный актив и не продолжает процесс рендеринга, пока не завершит получение таблицы стилей и анализ ее содержимого. Это время имеет значение. Это время до того, как прорисовывается первый пиксель на экране. С помощью вышеупомянутой техники вы можете позволить своему браузеру начать рисование, как только он получит документ, без блокировки его пути css (если у вас нет других блокирующих ресурсов)

Для загрузки страницы по-прежнему требуется такое же количество времени.

  1. Не всегда требуется одинаковая сумма.
  2. Оптимизация производительности зависит не только от того, сколько времени требуется, чтобы фактически завершить загрузку каждого бита страницы / ресурсов и т. Д., Но также от того, насколько быстро вы можете предоставить пользователю полезный контент (или любой контент), и многое другое ...

Почему веб-гигант Google предлагает такие нелепые методы, которые не соответствуют стандартам и создают проблемы времени загрузки, такие как FOUC? Как будто люди, которые придумывают эти идеи, не имеют понятия о стандартах.

То, что я уже упомянул, уже должно дать ответ на этот вопрос, поэтому я просто хочу дать вам совет. В компаниях этого типа есть много действительно талантливых и опытных людей (которые даже участвуют в написании веб-стандартов и инструментов и т. Д.). Если вы чего-то не понимаете с первого взгляда, проведите дополнительное исследование, спросите (как вы :-)) и попытайтесь понять причины того, что вы считаете неправильным. В большинстве случаев кто-то обнаружит, что причиной, по которой он считал некоторые вещи «нелепыми» и «противоречащими стандартам», было его неполное понимание, а не то, что они «не имели понятия о стандартах».

person Alekos Dordas    schedule 21.11.2019
comment
Теги <style> подходят для небольшого количества CSS - у меня с ними нет проблем. Что у меня действительно проблема, так это КАЖДОГО правила важности. Это может быть ОЧЕНЬ много CSS, который добавляет странице дополнительный вес. Когда этот CSS добавляется для WordPress, для каждой страницы появляется много дополнительных CSS, которые могут даже не использоваться, поэтому лучше всего включить только заголовок, который затем имеет FOUC на остальной части страницы. - person nick-roberts91; 22.11.2019
comment
Я понимаю концепцию идеи, и она может ускорить загрузку, но мне не нравится способ ее реализации (по крайней мере, нашим новым сотрудником). Это просто заставляет страницу выглядеть сломанной, так как изначально стилизован только заголовок, а остальная часть страницы остается пустой на пару секунд. - person nick-roberts91; 22.11.2019
comment
Стилизация только заголовка определенно приведет к FOUC в верхней части страницы. В большинстве случаев правила для контента в верхней части страницы не так много, как css. И в любом случае эти правила не добавляют лишнего веса, потому что они удаляются из файла css. Они просто меняют место. Итак, в конечном итоге дело в том, что здесь была неправильная реализация, которая привела к неправильным предположениям обо всей практике. - person Alekos Dordas; 22.11.2019
comment
Итак, что бы вы включили в верхний лист CSS? Я считаю, что это слишком большая часть страницы, чтобы включать ее в строку. Они добавляют дополнительный вес к файлу HTML / PHP, поэтому начальная загрузка контента тяжелее IMO. Я бы предпочел оставить весь CSS внешним в этом случае, если критический CSS используется только для заголовка, как вы говорите, неправильная реализация, поэтому страница действительно оформляется правильно. Новый сотрудник не желает слушать и продолжает сопротивляться, говоря: «Так скажи Google ...». Я бы не стал так беспокоиться, если бы он был реализован правильно и не было белого экрана, кроме заголовка при загрузке. - person nick-roberts91; 22.11.2019
comment
Вот несколько моментов, которые помогут лучше понять концепцию. Это идет вразрез с веб-стандартами за счет встраивания CSS в HTML (которые должны быть разделены). Помещение правил CSS в заголовок документа в тегах ‹style› совершенно нормально и приемлемо, если оно служит определенной цели, как в случае, который вы описываете. Мнения совершенно прекрасны и приемлемы, тогда как веб-стандарты и разделение проблем - нет. применение упомянутых стандартов / soc, безусловно, является упрямым, но концепции стоят особняком. - person albert; 24.11.2019