- 使用
http2
,复用tcp
连接
- 合理使用缓存
- 强缓存和协商缓存
service worker
缓存字体,样式,图片
gzip
压缩文本
- 减少图片体积
- 响应式图片
srcset
和size
- 使用
webp
格式
- 压缩
png
- 减小js体积
- 压缩
uglifyjs
- 使用
webpack
中的tree-shaking
去掉不必要的代码
- 使用
cdn
css
放头部,js
放底部
- 字体文件预加载
<link rel='preload' href="https://shuch.im/font.woff2" />
<link rel='dns-prefetch' href="https://github.githubassets.com"/>
- 首屏使用
SSR
react
使用renderToString
nextjs
- 减少重排和重绘
dom
操作离线,DocumentFragment
,display: none
- 使用
class
代替style
- 使用
transform
,filter
,opacity
,will-change
开启GPU
加速
- 延迟加载
- 按需加载
- 动态
import()
或require.ensure
- 页面
IntersetionObserver
- 使用
tree shaking
处理 es module
代码,如import { Button } from 'antd'
,默认有tree shaking
效果
- 字体异步加载
font-display: swap
Front-End Performance Checklist 2020