CSS 块何时使用

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

Tim Kadlec:

我见过一种特定的模式[用于加载非关键 CSS],即预加载/polyfill 模式。使用这种方法,您会将所有样式表加载为预加载,然后使用它们的 onload 事件,在浏览器准备好后将它们更改回样式表。

因此,您试图使样式表更异步,但这会导致两个主要问题

  1. 您已将下载的优先级提高到高于任何其他资产。
  2. 您也阻止了 HTML 解析器(因为 polyfill 作为内联脚本)。

Firefox 在这种特定情况下做了一些巧妙的事情来避免问题 #2,但这会影响所有其他浏览器。

我对使用花哨的技术来欺骗浏览器以获得理论上更好的下载/渲染模式从未有过好运气。我有点喜欢将样式表放在头部,将脚本放在主体末尾的那种人,但我知道网络是一个复杂的地方。事实上,快速浏览一下,我发现 Jetpack 将内联脚本插入到我的<head>中,因此这也会影响我的加载,除非他们使用模糊的type加载它,直到以后的脚本执行并更改它,可能就是为了避免这个问题。

无论如何,Tim 的建议

• 如果您正在使用 loadCSS 和预加载/polyfill 模式,请改用 print 样式表模式。

• 如果您有任何正常加载的外部样式表(即,作为常规样式表链接),请将所有可以在标记中找到的内联脚本都移动到它上面

• 内联您的关键 CSS 以获得尽可能快的初始渲染时间。

打印模式为

<link rel="stylesheet" href="/path/to/my.css" media="print" onload="this.media='all'">

直接链接 →