【问题标题】:Google PageSpeed - render blocking contentGoogle PageSpeed - 呈现阻塞内容
【发布时间】:2024-06-03 18:45:01
【问题描述】:

好的...所以我正在运行一个小测试来尝试从 Google PageSpeed 获得 100/100。我们有以下网站 - https://redwing.media

我还有一件事要做,那就是把 CSS 去掉(作为它的渲染阻塞内容),允许内容加载,然后使用 JavaScript 拉入 CSS。如果我根本不加载 CSS,我会得到 100/100 PageSpeed。我已经把我所有的关键 CSS 放在了头上。

<style>
    BODY { background-color: #1B1719; }
    BODY > * { display: none; }
</style>

所以,我使用 Google 建议的在内容加载后加载 CSS 的方法 (see here) -

<noscript id="deferred">
    <link rel="stylesheet" type="text/css" href="assets/css/screen.css">
</noscript>
<script>
    var loadDeferredStyles = function() {
        var addStylesNode = document.getElementById("deferred");
        var replacement = document.createElement("div");
        replacement.innerHTML = addStylesNode.textContent;
        document.body.appendChild(replacement)
        addStylesNode.parentElement.removeChild(addStylesNode);
    };
    var raf = requestAnimationFrame || mozRequestAnimationFrame ||
        webkitRequestAnimationFrame || msRequestAnimationFrame;
    if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); });
    else window.addEventListener('load', loadDeferredStyles);
</script>

现在,当我运行 PageSpeed 洞察时,我直接回到了 85/100 的移动页面速度,因为我的 screen.css 显然是渲染阻塞...

这是怎么回事?我正在使用 Google 推荐的解决方案!

这是我正在建设的网站 - https://redwing.media/

【问题讨论】:

    标签: css asynchronous google-pagespeed render-blocking


    【解决方案1】:

    Css 总是渲染阻塞,所以,你做得很好,你正在用最好的方法加载一个外部 css 文件。

    提高页面速度的唯一方法是将 css 文件内容内联到 html 的头部,这样做可以节省浏览器搜索外部文件的时间,但是将是一个小的改进。

    【讨论】:

    • 感谢乔迪·弗洛雷斯。所以总而言之,除了内联所有代码之外,我几乎无能为力。这解决了那个问题 - 谷歌似乎不建议这样做真是太可惜了!谢谢你的帮助。赞成并标记为答案:)