在 HTTP/2 世界中管理 CSS 和 JS

Avatar of Chris Coyier
Chris Coyier

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

Trevor Davis 介绍了我们如何在全方位使用 HTTP/2 时链接 CSS

这与我们多年来一直奉行的最佳实践背道而驰。但为了利用多路复用功能,最好将 CSS 拆分成更小的文件,以便每个页面只加载必要的 CSS。示例页面标记看起来像这样

<link href="stylesheets/modules/text-block/index.css" rel="stylesheet">
<div class="text-block">
  ...
</div>

<link href="stylesheets/modules/two-column-block/index.css" rel="stylesheet">
<div class="two-column-block">
  ...
</div>

这个想法与 关键 CSS 有些共同之处。使用 <link> 加载 CSS 会阻塞,因此尽快加载尽可能少的 CSS,并在需要时加载其余部分。由于 HTTP/2 多路复用,分别加载样式表没有性能损失,并且在 HTML 使用这些样式表之前加载它们实际上利用了阻塞,因为在获取相应的 CSS 之前不会渲染 HTML。此外,您将能够根据需要在这些更小的 CSS 部分上中断缓存,请记住 它可能无法像以前那样压缩得很好

问题是… 对于任何不支持 HTTP/2 的浏览器(例如 IE 10、Opera 移动版/迷你版、UC 浏览器),虽然此技术仍然有效,但其性能会很差。对于出于任何原因不需要支持这些浏览器的项目来说,这将是一个更简单的决定。

直接链接 →