Хотя это может показаться анти-шаблоном, все вышеописанные CSS, которые вы встроили в свой документ СЛЕДУЕТ дублироваться в вашем внешнем документе CSS. Таким образом, вы можете создать единый пакет для всего сайта, который можно получить один раз для всего сайта, но эта начальная загрузка страницы будет ускорена. В то время как это приводит к дополнительным «потерянным» KBs upfront, преимущество заключается в том, что у вас есть небольшой подмножество необходимого CSS, доступного вам, как только HTML отправляется клиенту, сокращая время, необходимое для визуализации первоначального представления клиента ,
Кроме того, чтобы быть понятным, если вы правильно следуете этой практике, каждая страница на сайте будет иметь другой набор вышеперечисленных css, поскольку каждая страница имеет разные контенты/теги выше что сделало бы невозможным удалить вышеописанный CSS из полного внешнего файла (предполагая, что вы объединяете все CSS в один файл).
Подробнее о практике вышеописанного css here.
Если вы действительно обеспокоены дублированием кода (хотя в этом случае вы не должны быть), вы можете использовать файлы cookie для отслеживания того, посетил ли пользователь сайт раньше. Если пользователь не был раньше, вы можете встроить вышеописанный CSS. Если пользователь был раньше, вы можете предположить, что пользователь уже имеет полный файл CSS и что файл CSS будет извлечен из кеша браузеров.
Есть куча статей о том, насколько ненадежным является кеш браузера, поэтому моя рекомендация заключается в том, что вы просто выполняете то, что уже делаете для удовлетворения требований клиентов.
Еще одна вещь, о которой следует упомянуть, заключается в том, что эта практика будет в значительной степени уходить, как только HTTP/2 станет более распространенным, поскольку последующие HTTP-запросы не будут столь дорогими, как сегодня. Учитывая интенсивный инструментарий/усилие, которое требуется для этой практики (особенно, если у вас есть будущая проверка против HTTP/2), может быть лучше (я думаю, это так) просто полностью избежать этого.
На мой взгляд, некоторые из этих инструментов выходят за борт над предложениями «над складкой». Если ваш css минирован, сжат и загружен из одного файла, он не будет сильно замедлять вашу страницу.Вытягивание определенных стилей из листа для встроенного стиля «над складками» просто делает для грязного, неуправляемого кода, который не будет заметно быстрее. Показатель Pagespeed - хорошая рекомендация, но это еще не все. –
Согласен, но клиент настаивает на результатах Google PageSpeed. –
Затем вы просто должны поместить файл css в нижний колонтитул и иметь встроенные стили в верхней части файла только для элементов, видимых при загрузке страницы (выше складки). Вам нужно будет сделать эту страницу за страницей. –