面试官:前端优化怎么做?

185 阅读1分钟

又是老生长谈的问题了,笔者记录一下大致的方向,其中的细节之后有时间再补充。

请求时优化

1.DNS预解析:DNS prefetch用于meta和link标签
2.减少http请求数:js文件打包成一个、精灵图
3.使用http2:解析速度快。解析帧、多路复用---http1.1 Pipelining是按照顺序响应,后发的请求可能被阻塞、首部压缩---http1.1每次请求携带大量冗余头信息、服务器推送(使用http2的话,关于减少http请求数的优化就无用了)
3.减少http请求大小:webpack等打包工具优化(树摇、动态垫片)
4.按需加载:SPA单页项目,动态引入组件
5.服务器渲染
6.静态资源使用CDN加速
7.图片懒加载
8.图片合理选择,gif、jpg、png、webp
9.http缓存:协商缓存,强缓存
10.css放在文件头部,js放在底部,外部脚本使用defer和async

运行时优化---主要是代码规范问题

1.减少重绘和重排:分离读写操作,就是说读取DOM操作全部在一块,写DOM操作全部在一块、样式集中改变、合理使用display:none visibility:hidden opacity:0
2.事件委托:target,只给父元素添加事件,给子元素添加一个通用的类名即可
3.防抖和节流
4.js多线程:使用web worker 进行复杂计算---onmessage postmessage
5.多判断使用switch而不是if-else,减少cpu判断次数


记录记录!