【译】前端性能优化清单

本文翻译自thedaviddias总结的Front-End-Performance-Checklist

HTML

  • 删除不需要的注释: 确保注释从页面中移除。

    原因:

    注释对用户并没有用,应该从生产文件中删除。一种需要保留注释的情景是你引用别人库的原始文件。

    做法:

    大多数时候,注释会被HTML压缩插件移除。

  • 删除不需要的属性: 类型属性比如type="text/javascript"或者type="text/css"不再是必须的,应当被移除。

    <!-- Before HTML5 -->
    <script type="text/javascript">
        // JavaScript code
    </script>
    
    <!-- Today -->
    <script>
        // JavaScript code
    </script>
    复制代码

    原因:

    因为HTML5中将text/css和text/javascript作为默认的属性值,所以不再需要写类型属性。

    做法:

    ⁃ 确保你的<link><script>标签没有任何的type属性。

  • 总是将CSS标签放在JavaScript前面: 确保CSS总是在JavaScript代码前加载。

    <!-- Not recommended -->
    <script src="jquery.js"></script>
    <script src="foo.js"></script>
    <link rel="stylesheet" href="foo.css"/>
    
    <!-- Recommended -->
    <link rel="stylesheet" href="foo.css"/>
    <script src="jquery.js"></script>
    <script src="foo.js"></script>
    复制代码

    原因:

    在JavaScript前引用CSS可以实现更好的并行下载,从而加快浏览器呈现时间

    做法:

    ⁃ 确保<head>中的<link><style>总是在<script>前。

  • 减少iframes的数量: 只有在任何其他技术实现不了的情况下才使用iframes。尽可能避免使用iframes。

CSS

  • 压缩: 生产环境上的CSS文件应该是压缩的,注释、空格、新行需要被移除。

    原因:

    当CSS文件压缩过后,内容会加载的更快,发送给客户端的数据也将减少。在生产环境中压缩CSS文件很重要。这对用户和希望降低带宽成本和资源使用量的企业都很有利。

    做法:

    ⁃ 在构建或部署之前或期间,使用工具自动压缩文件。

  • 合并文件: 将CSS文件写在一个文件中(并不总对HTTP/2有效)。

    <!-- Not recommended -->
    <link rel="stylesheet" href="foo.css"/>
    <link rel="stylesheet" href="bar.css"/>
    
    <!-- Recommended -->
    <link rel="stylesheet" href="foobar.css"/>
    复制代码

    原因:

    如果你仍在使用HTTP/1,你可能还需要合并文件。如果你的服务器使用HTTP/2 (还在进行测试),情况就不太一样了。

    做法:

    ⁃ 在构建或部署之前或期间,使用在线工具或任何插件将CSS合并起来。 ⁃ 当然,确保合并不会破坏你的项目。

  • 非阻塞: CSS文件需要非阻塞引入,阻止DOM加载时间过长。

    <link rel="preload" href="global.min.css" as="style" onload="this.rel='stylesheet'">
    <noscript>
        <link rel="stylesheet" href="global.min.css">
    </noscript>
    复制代码

    原因:

    CSS文件会阻止页面加载并延迟页面的呈现。使用preload可以在浏览器开始显示页面内容之前就加载CSS文件。

    做法:

    ⁃ 你需要在link标签中添加rel属性值为preload以及as="style"

  • CSS类名长度: 类名的长度可能会对HTML和CSS文件产生(轻微)影响。

    原因:

    对于你的项目采用何种命名策略将会对样式表的可维护性产生重大影响,甚至性能影响。不过它也是有争议的。如果你使用的是BEM命名方式,在某些情况下可能会遇到命名的长度字符多余实际所需的类名。因此,明智的选择CSS类名和命名空间是很重要的。

    做法:

    对一些人来说,设定最大的类长度可能很有趣,但是需要确保分解成组件的网站可以减少类(和声明)的数量和长度。

  • 没有用到的CSS: 移除没有用到的CSS选择器。

    原因:

    删除未使用的CSS选择器可以减少文件大小,加快资源的加载速度。

    做法:

    ⁃ 始终检查你使用的CSS框架是否已经包含了重置/normalize的代码。有时你可能不需要重置/normalize文件中的所有内容。

  • 关键CSS: 关键CSS包括了用来渲染页面可见部分的样式。它嵌入在你的主CSS调用之前,位于<style></style>之间,排成一行(如果可以的话进行压缩)。

    原因:

    内联关键的CSS样式能够帮助加快页面的渲染并且减少服务器请求数量。

    做法:

    使用在线工具或使用类似Addy Osmani开发的插件生成关键CSS。

  • 嵌入或行内CSS: 避免在body中使用嵌入或者行内CSS。(http/2可以忽略)

    原因:

    将内容与样式分开是一个很好的做法,它使得代码更易于维护,并且保持站点的可访问性,这是原因之一。但是对于性能而言,它减少了HTML页面的文件大小和加载时间,这是第二个原因。

    做法:

    总是使用外部样式表或者将CSS内嵌在<head>中(并遵循其他的CSS性能优化规则)

  • 分析样式表: 分析样式表可以帮助你标记有问题、冗余和重复的CSS选择器。

    原因:

    有时你的CSS文件中可能有冗余或验证错误,分析你的CSS文件并消除这些问题可以帮助你加快CSS文件的速度(因为你的浏览器会更快地阅读它们)

    做法:

    你的CSS应该是有条理的,使用CSS预处理器可以帮助你做到这一点。下面列出的一些在线工具也可以帮助你分析和更正代码。

Fonts

Image

JavaScript

Server

JS-Frameworks

Angular

React

Vue

CMS-Frameworks

WordPress

文章

插件推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值