前端性能优化的一些思路

加载阶段(使用Network查看)

  • 减少http请求次数
    CSS Sprites、数据缓存
  • 减小http请求内容大小
    JS/CSS源码压缩、网页gzip、压缩图片
  • 加快请求速度
    CDN托管、图片服务器
  • 通过域名切分突破同域并发请求数为6的限制
  • 延迟加载
    JS的defer、async、动态创建script标签、按需import()
    图片/DOM元素懒加载
  • 预加载
  • 流式解析
    对于超大请求,使用 Fetch API 的 ReadableStream处理流式响应,分块读取。
  • 其他
    CSS写顶部(让CSS尽快开始下载/解析)
    JS写底部(避免阻塞HTML和CSS解析)
    避免使用table和iframe(他们要等其中的内容完全下载之后才会显示出来,比div+css布局慢。iframe还会阻塞页面的onload,因此最好事后用js操作其src)

交互阶段(使用Performance查看火焰图)

  • 减少JS执行时间,防止太久占用主线程(拆分函数、启用Web Worker)
  • 避免频繁触发回流/重绘
    不要频繁查询位置信息
    合理利用复合图层(transform动画)
    使用虚拟DOM
  • 不要在循环中大量创建临时对象/方法,避免频繁的垃圾回收
  • 使用requestAnimationFrame代替setTimeout
    在不可见的页面中会自动暂停,且不会因主线程阻塞导致多个回调堆积,恢复时突然执行造成卡顿。
  • Vue:合理使用v-once/v-memo
  • 函数节流(throttle)
    在事件触发后加入队列,n秒后统一处理。如果期间又有事件发生,则重新计时。
    用于搜索框搜索联想等。
  • 函数防抖(debounce)
    事件在限定时间内多次触发也只结算一次。
    用于邮箱输入格式验证、搜索框最后一次输入完,再发送请求等。
  • 做好内存管理
    及时销毁不再需要的对象、避免内存泄漏(闭包、销毁事件侦听器)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 网站优化离不开前后端的互相协作,但是对于前端工程师来说,在保证后端技术方案不变时,能不能只利用前端技术来优化网站呢...
    留七七阅读 6,392评论 0 31
  • 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:...
    秀才JaneBook阅读 2,566评论 0 25
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 114,839评论 24 450
  • 围绕前端的性能多如牛毛,涉及到方方面面,以我我们将围绕PC浏览器和移动端浏览器的优化策略进行罗列注意,是罗列不是展...
    流动码文阅读 695评论 0 0
  • 谁会将黑暗中的花朵关心无论都么芬芳而又馥郁无论多么挑动人的神经 所有的长椅在安静中长椅在安静中睡去没有滚烫的呼吸没...
    李一十八阅读 350评论 0 0