移除未使用的 CSS

Lighthouse 报告的“优化”部分会列出具有未使用 CSS 的所有样式表,有望节省 2 KiB 或更多。移除未使用的 CSS 以减少网络活动消耗的字节数据:

Lighthouse“移除未使用的 CSS”审核的屏幕截图

未使用的 CSS 如何降低性能

使用 <link> 标记是向页面添加样式的常用方法:

<!DOCTYPE html>
<html>
  <head>
    <link href="main.css" rel="stylesheet" />
    ...
  </head>
</html>

浏览器下载的 main.css 文件称为外部样式表,因为它与使用它的 HTML 是分开存储的。

默认情况下,浏览器必须下载、解析和处理遇到的所有外部样式表,然后才能在用户屏幕上显示或渲染任何内容。浏览器在处理样式表之前尝试显示内容是没有意义的,因为样式表可能包含影响网页样式的规则。

必须从网络下载每个外部样式表。这些额外的网络往返可能会大大延长用户必须等待的时间,才能在屏幕上看到任何内容。

未使用的 CSS 还会减慢浏览器构建呈现树的速度。渲染树与 DOM 树类似,但它还包含每个节点的样式。如需构建渲染树,浏览器必须遍历整个 DOM 树,并检查哪些 CSS 规则适用于每个节点。未使用的 CSS 越多,浏览器可能需要花时间计算每个节点的样式的时间就越长。

如何检测未使用的 CSS

Chrome 开发者工具的“覆盖率”标签页可帮助您发现关键和非关键 CSS。 请参阅使用“覆盖率”标签页查看已使用和未使用的 CSS

Chrome 开发者工具:“覆盖率”标签页
Chrome 开发者工具:覆盖率标签页。

内嵌关键 CSS 并推迟加载非关键 CSS

与在 <script> 标记中内嵌代码类似,在 HTML 页面的 head 中,在 <style> 块内内嵌首次绘制所需的关键样式。然后,使用 preload 链接异步加载其余样式。

考虑使用重要工具自动提取和内嵌“可见区域”CSS。

如需了解详情,请参阅推迟非关键 CSS

特定于堆栈的指导

Drupal

建议您移除未使用的 CSS 规则,仅将所需的 Drupal 库附加到相关网页或网页中的组件。如需了解详情,请参阅 Drupal 文档

若要找出会添加无关 CSS 的附加库,请尝试在 Chrome 开发者工具中运行代码覆盖率测试。在 Drupal 网站中停用 CSS 聚合后,您可根据样式表网址找出导致问题的主题或模块。

请留意列出多个样式表且代码覆盖率以大量红色显示的主题和模块。主题和模块应仅附加相应页面上实际使用的样式表库。

Joomla

某些 Joomla 扩展程序会在您的网页中加载未使用的 CSS,建议您减少这类扩展程序的数量,或改用其他扩展程序。

WordPress

建议您减少或改变会在您网页中加载未使用的 CSS 的 WordPress 插件的数量。

资源