Блокировка рендеринга и CSS

Думаю, об этом спрашивали снова и снова, но я не видел ответа, который ищу.

Я делаю несколько простых тестов с файлом HTML и файлом CSS, пытаясь остановить рендеринг страницы, блокируя CSS, запустив сайт через аналитику страницы (google)

Теперь я видел такие ответы:

<link rel = "stylesheet" href = "style.20180530.css?ver=1.0" media = "none" onload = "if (media!='all')media='all'">

и я видел такие ответы:

<link href = "https://fonts.googleapis.com/css?family=Roboto:300,700" rel = "preload" onload = "this.rel='stylesheet';this.removeAttribute('onload');" as = "style">

И то, и другое меня устраивает для шрифтов Google! Но не для основных стилей страницы, я не думаю, что пользователям удобно видеть страницу без стилей, а затем они внезапно загружаются.

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

Я видел, как сайты действительно загружают такие стили:

<link rel='stylesheet' id='main-css'  href='./style.2018052108.css?ver=4.9' type='text/css' media='all' />

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

И они вообще не блокируют рендеринг ... Как?

Я на https, я использую cloudflare, и моя таблица стилей сжата и только вокруг 24 байта, и я все еще получаю блокировку рендеринга.

  1. Почему?
  2. Как этого избежать?

Вы всегда будете получать блокировку рендеринга, но это совсем не проблема ... это простые рекомендации, и вы никогда не сможете выполнить их все. И вы никогда не получите 100% баллов .. вам нужно сосредоточиться на скорости / загрузке страницы

Temani Afif 04.06.2018 17:41
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
1
501
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

CSS, загруженный как внешний запрос, всегда блокирует рендеринг, вы не можете этого избежать. Рекомендация по анализу скорости страницы заключается в том, что вы не выполняете никаких запросов css до загрузки содержимого, чтобы избежать эффекта нестилирования, который они предлагают вам встроить CSS, необходимый для отображения содержимого до сворачивания.

Страница в вашем примере делает именно это: они встраивают некоторый контент css (проверьте исходный код и найдите тег style), затем, когда контент загружен, они добавляют внешнюю таблицу стилей с javascript.

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

Как всегда, в css-tricks у вас есть отличный вводный пост по этим методам: https://css-tricks.com/authoring-critical-fold-css/

Нет, я не думаю, что ты прав. В источнике нет CSS, который бы делал какие-либо стили для содержимого над сгибом. Единственный тег стиль, который я вижу, это изменение img.emoji - вы говорите мне, что это останавливает блокировку рендеринга?

andy jones 05.06.2018 11:59

Хорошо, я вижу, что не всегда загружается один и тот же контент, я говорил о другом теге стиля, снимке экрана инструментов разработчика, показывающем CSS, на который я ссылался imgur.com/OEjBmj5

Ander 05.06.2018 12:53

Я предполагаю, что они проводят какой-то A / B-тест, загруженный контент отличается случайным образом.

Ander 05.06.2018 12:57

Да, должно быть, и если это скорость страницы Google, они обслуживают встроенные стили?

andy jones 05.06.2018 13:28

Этого я не знаю, может быть, может быть, это просто сочетание удачи и всей славы нескольких типов кешей

Ander 05.06.2018 13:34

У меня есть сайт, где благодаря медиа-запросам все умещается на одном экране, будь то настольный или мобильный, без прокрутки. Так что никакой «фолда» нет. Insights рассматривает javascript, необходимый для рендеринга страницы, как блокировку рендеринга. Этот скрипт является внешним, но, поскольку все другие страницы сайта используют его, он лучше хранится в кеше, чем замедляет скорость страницы. Таким образом, нет гибкости в аналитике Pagespeed. (и, конечно же, Google Analytics - нет-нет)

plugincontainer 16.06.2018 10:04

Ключ к аналитике Google PageSpeed ​​- блокировка рендеринга в верхней части страницы. Если вы проверите сайт, на который вы указали ссылку в качестве справочного материала для проверки скорости страницы, вы не найдете строго встроенных стилей - вы правы. Тем не менее, у них есть блок <style>...</style> внутри их <head>, который устанавливает все их самые важные стили для контента, расположенного в верхней части страницы. Это означает, что эти стили отображаются немедленно, а все остальные поддерживающие стили загружаются вскоре после этого, но ваши посетители (и Google PageSpeed) не заметят разницы.

Другие вопросы по теме