前端技术方面的性能优化有哪些? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
boblin
V2EX    前端开发

前端技术方面的性能优化有哪些?

  •  
  •   boblin 2021-02-19 20:33:38 +08:00 3154 次点击
    这是一个创建于 1772 天前的主题,其中的信息可能已经有所发展或是发生改变。
    简历里写了前端性能优化。最近面试,都爱问做了哪些优化。答:减少请求数、骨架屏、懒加载、本地缓存。面试官的意思是都是一些体验优化,而且都很基础,不太满意。然后面试结束的时候我也忘了问他们都做了哪些优化。

    请问各位网友,你们平时都做了哪些性能优化?
    15 条回复    2021-02-22 11:06:28 +08:00
    qyf1994
        1
    qyf1994  
       2021-02-19 20:43:46 +08:00
    做的挺多的就是想不起来了
    qyf1994
        2
    qyf1994  
       2021-02-19 20:44:07 +08:00
    简历上不知道写些什么
    mnikn
        3
    mnikn  
       2021-02-19 20:53:56 +08:00
    基本思路主要是这些,但是落实到具体业务就没有这么简单了。例如怎么定义性能指标,怎么知道优化后的提升了多少。
    Ptu2sha
        4
    Ptu2sha  
       2021-02-19 20:57:53 +08:00
    CDN HTTP2 webp 按需加载 雪碧图 字体图标 图片缩放
    connection
        5
    connection  
       2021-02-19 21:01:08 +08:00
    与#3 类似,先定义指标,再结合业务特点做性能优化
    ryougifujino
        6
    ryougifujino  
       2021-02-19 22:00:35 +08:00
    前端其实没有后端那么重视性能,一般来说也就 CDN 、Tree Shaking 、缓存这些了,都是必备,没什么新意。
    确实还是要结合自己的业务,因为一般都会遇到一些实际的问题,再去讲述,就更有说服力一些。
    比如我之前由于后端的逻辑,导致请求某一个接口后 token 就会变,并发请求的时候会出现授权错误,最后写了一个调度器解决了。
    还有就是项目中遇到了 RSA 解密的场景,会卡主线程,导致操作卡顿,后面采取将解密方法异步化后分片操作。这样的话就可以展开说。
    aaronlam
        7
    aaronlam  
       2021-02-19 22:15:33 +08:00
    之前在公司做项目时内部总结了几个点,可以给大家参考一下: https://docs.google.com/document/d/1FCJ0M0KNR_FpdueOYjFvqBrw2Qp0aL2xJz5f9LupcbU/edit
    9yu
        8
    9yu  
       2021-02-19 22:39:01 +08:00 via Android
    WASM
    cyrbuzz
        9
    cyrbuzz  
       2021-02-19 22:42:14 +08:00
    https://github.com/HuberTRoy/myown/blob/master/%E5%9F%BA%E4%BA%8E%E6%80%9D%E8%80%83%E6%89%80%E5%81%9A%E7%9A%84%E6%8E%A2%E7%B4%A2/%E6%80%A7%E8%83%BD%E6%96%B9%E9%9D%A2%E7%9A%84%E6%8E%A2%E7%B4%A2.md

    https://github.com/HuberTRoy/myown/blob/master/web%E7%A8%8B%E5%BA%8F%E4%BC%98%E5%8C%96%E6%80%9D%E8%B7%AF.pdf

    优化公司产品时的总结,lighthouse 从不到 10 分已经提升到了 50~60+。

    我自己的实践优化方面是:
    1. 第三方资源非阻塞加载,async/defer 标记,这个提速很大。
    2. DNS/CDN(百度统计等)链接的预查询与预连接,这个看不出来效果,提速微小。
    3. 服务器端支持 HTTP2,比 HTTP1.1 快了不是一点两点。
    4. 利用服务器端进行延迟加载,本身是个 Nuxt 的服务器端项目,利用 client-only 标签配合 import() + v-if 条件渲染,其实就是个分块+懒加载不过效果巨大,鹅且平时写组件的时候几乎都用 import 静态导入,调用频率低的模块也可以用 import()来改写。
    5. webpack 打包时的 tree-shaking,老生常谈的 lodash 和 lodash-es 等等,这个减少的是传输体积,如果项目本身冗长这块提升也非常大。
    6. 缓存这个就不用说了,检查检查有没有配置合理。
    7. 图片移动端剪裁成 2 倍实际显示大小的尺寸,PC 端 1 倍,牺牲小部分清晰度的同时大幅减少传输体积。
    8. 项目具体内部的代码优化,比如之前实现了一个利用 vue computed 属性的动态设置 style 的滚动效果,发现占用 CPU 20%以上....然后改成了 animation 。
    yhxx
        10
    yhxx  
       2021-02-19 23:04:44 +08:00
    挑点不常见的?
    比如 HTTP3 ?比如特别极致的图片优化( HEIC 、APNG 之类的,或者比如提升 CDN 命中率)?
    murmur
        11
    murmur  
       2021-02-19 23:19:43 +08:00   1
    没啥能优化的,国内的策略都是放弃低端机,乱七八糟堆一大堆东西,咋个优化

    少放东西别整花里胡哨是最管事的
    udqg3v0ZL6h6sHu8
        12
    udqg3v0ZL6h6sHu8  
       2021-02-19 23:24:39 +08:00
    《简历里写了前端性能优化》 -> 简历里去掉前端性能优化。
    面试遇到八股文算我倒霉,可能惹不起,可能躲不起,但不要主动给自己找麻烦呀。
    agdhole
        13
    agdhole  
       2021-02-19 23:31:12 +08:00
    哔哩哔哩把视频上传处理的一些步骤放到了本地 wasm 里面运行,比如预览图生成
    walpurgis
        14
    walpurgis  
       2021-02-20 00:13:41 +08:00
    传输层的性能优化有些实在过于 hack,就为了提升一丢丢速度而引入复杂度,现在网速快了真不差这 0 点几秒
    接触过一个屎山项目,一个 table 几千行,加载再快也没用,拖都拖不动,能搞定这种才叫性能优化吧
    xiayue
        15
    xiayue  
       2021-02-22 11:06:28 +08:00
    我也是最近才知道的。有个概念叫做 “关键渲染路径( Critical Rendering Path )” 你可以搜索一下。感觉有点用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2602 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 06:27 PVG 14:27 LAX 22:27 JFK 01:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86