前端性能优化

前端性能优化

1 构建工具的选择

选择适合开发环境的工具,如 Grunt、Gulp、Webpack、Postcss等

2 渐进增强

首先设计并构建核心体验,再针对高性能浏览器设计高级特性的相关体验

3 合理利用 CDN

可以将部分内容用静态网站生产工具生成一个静态版本,将其置于 CDN 上,从而避免数据库的请求

4 优化构建

使用 cutting-the-mustard 技术

根据浏览器类型的不同载入不同类型的资源。

传统浏览器载入核心型资源,现代浏览器载入增强型资源。

在载入资源时要严格遵守相应的规则:页面加载时应首先载入 Core 资源,然后在 DomContentLoaded 事件触发时载入 Enhancement 资源,最后在 Load 事件触发时载入 Extras 资源。

tree-shaking

打包过程中检测工程中没有引用过的模块并进行标记,在资源压缩时将它们从最终的bundle中去掉(只能对ES6 Modlue生效) 开发中尽可能使用ES6 Module的模块(静态引入),提高tree shaking效率

多线程构建

  • HappyPack(不维护了)
  • thread-pool(webpack5)

压缩代码

  • webpack-paraleel-uglify-plugin
  • css-loader 的 minimize 选项开启 cssnano 压缩 css

缩小打包作用域

  • exclude/include
  • ignorePlugin 完全排除模块

DLL 分包

使用 DllReferencePlugin 对 manifest.json 进行引用,将一些基本不会改变的代码打包成静态资源,避免反复编译浪费时间

使用缓存

  • 使用 expires、cache-control、max-age 以及其它 HTTP 缓存响应头
  • babel-loader 开启缓存

异步加载 js

可以通过在 HTML 的 script 标签上添加 defer 以及 async 属性来实现

优化图片

  • 可以使用压缩工具对不同格式的图片进行压缩,如 JPEG 图片用 mozJPEG 压缩、PNG 图片用 Pingo 压缩、GIF 图片用 Lossy GIF 压缩、SVG 图片用 SVGOMG 压缩
  • 使用 WebP 格式的图片

首屏渲染

我们需要改变处理CSS的方式–这意味着将其分为两个文件。

对于第一个文件,我们仅提取呈现内容所需的最少CSS,然后将其内联到网页中(以 <style> 的行内形式内嵌到 <head>)。对于第二个文件或非关键CSS,我们异步加载该文件,以免阻塞网页。

加快网络传输

  • 使用懒加载的方式载入字体或者开销大的组件,如视频、iframe、图片等
  • dns-prefetch,能够让浏览器在后台进程执行一次 DNS 查询
  • preconnect,能够让浏览器在后台进程发起一次握手(DNS,TCP,TLS)
  • prefetch,能够让浏览器发起对资源的请求
  • prerender,能够让浏览器在后台进程渲染出特定的页面
  • preload,在不执行资源的前提下,预先拿到该资源

5 提高渲染性能

  • 减少重绘和重排

  • 使用 transform 和 opacity 实现动画

    对于独立的合成层应用 transform 和 opacity 是不会触发 Repaint 的

转载请注明出处,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值