PageSpeed ​​Insights Отложить неиспользуемые CSS и изображения на экране

Я удалил весь свой CSS, используя

media="none" onload="if(media!='all')media='all'"

и изображения с использованием yall.min.js

Но PageSpeed ​​Insights продолжает заявлять об этом (и изображения тоже видны)

Как мне это оптимизировать?

Спасибо, Ари


person Programador AR    schedule 22.01.2019    source источник


Ответы (1)


Я использую JavaScript для асинхронной загрузки внешних файлов CSS. Подобно старым решениям, в которых сценарии помещались перед закрывающим тегом </body>, теперь я представляю атрибуты данных для создания тегов <link>, чтобы они автоматически делались асинхронными:

HTML

<div data-dom="link" data-href="@asyncCssBundle" data-media="screen"></div>
<div data-dom="link" data-href="@printBundle" data-media="print"></div>

jQuery

/**
  * Loads an array object of CSS files in async mode
  * stops render blocking CSS loading
  * good for fonts and @imports
  * @prop {object} asyncLinkTag data representation of a link tag on a div element
  */
function loadCssAsync() {
    var arr = [];

    $.each($('[data-dom="link"]'), function () {
        var el = $(this),
            link = $('<link />').prop({
                href: el.data('href'),
                rel: el.data('rel') || 'stylesheet',
                media: el.data('media') || 'screen'
            });

        arr.push(link);
    });

    $(document.head).append(arr);
}

$(function(){
    loadCssAsync();
});

Кроме того, в SCSS я различаю CSS-код над сгибом и фон, шрифты, печать и т. Д.

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

person Tim Vermaelen    schedule 22.01.2019
comment
Привет, Тим. Это старый проект, я просто программист, а не веб-дизайнер, поэтому я плохо разбираюсь в CSS и шрифтах. Для ленивой загрузки изображений я использовал yall, если я проверю исходный код, он работает, но Pagespeed Steel сообщает, что он загружен при запуске, а также видимые изображения. Для CSS вы предлагаете загрузить их с помощью javascript? - person Programador AR; 23.01.2019
comment
Как вы проверяете, что он работает с yall? Tbh, я не знаком с yall, поэтому я опубликовал то, что знаю лучше всего. Если выбранная вами библиотека делает то же самое, у вас будет ложное срабатывание по скорости страницы. При загрузке CSS с блокировкой рендеринга, например @import url() и background-image: url() в CSS, вы можете выделить все эти селекторы CSS на более позднем этапе = ›JavaScript! Потому что в CSS пока нет асинхронной загрузки. Замечание: я доволен минимизированным файлом CSS с блокировкой рендеринга размером 30–100 КБ, чтобы избежать FOUC. Если включены шрифты и bg-изображения, вам также необходимо посчитать их вес. - person Tim Vermaelen; 24.01.2019
comment
Так что же именно означает скорость страницы, вы упоминаете, что утверждаете это? Сначала посмотрите на yall, ничего не говорится о борьбе с блокировкой рендеринга CSS. Приведенное выше решение предназначено только для CSS с блокировкой рендеринга. Только для изображений вы столкнетесь с правильным размером, правильной кодировкой и т. Д. ... не стесняйтесь попробовать gtmetrix для соответствия результат скорости вашей страницы. - person Tim Vermaelen; 24.01.2019