图片显示用静态资源+相对路径 对比 用 base64,性能上有区别吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
unt
V2EX    程序员

图片显示用静态资源+相对路径 对比 用 base64,性能上有区别吗

  •  
  •   ut 2023-01-29 11:13:53 +08:00 3989 次点击
    这是一个创建于 991 天前的主题,其中的信息可能已经有所发展或是发生改变。
    图片 2k,base64 3k 。

    页面上渲染 3000 个图片,性能上有差距吗。
    25 条回复    2023-01-29 23:08:45 +08:00
    for8ever
        1
    for8ever  
       2023-01-29 11:19:50 +08:00
    有区别,base64 可以减少 HTTP 请求,对于小图片用 base64 更好
    loading
        2
    loading  
       2023-01-29 11:25:37 +08:00
    base64 就是要等 html 全部下载完才渲染(?)

    我觉得你应该看看 雪碧图
    opengps
        3
    opengps  
       2023-01-29 11:42:01 +08:00
    网络连接数可能占用更少,但 cpu 占用会更多
    matepi
        4
    matepi  
       2023-01-29 11:43:07 +08:00
    浏览器也是能并发连接的啊
    okakuyang
        5
    okakuyang  
       2023-01-29 11:54:44 +08:00
    什么场景这么极端
    641571835
        6
    641571835  
       2023-01-29 11:56:57 +08:00 via iPhone
    @for8ever 如果是 http2 这个不是问题吧
    uasier
        7
    uasier  
       2023-01-29 11:57:22 +08:00
    合理操作应该是雪碧图
    uasier
        8
    uasier  
       2023-01-29 11:58:00 +08:00
    同时也可以看看是否需要懒加载
    cvooc
        9
    cvooc  
       2023-01-29 12:00:20 +08:00
    网页的话还是建议图片形式, 好歹可以懒加载, 图片转 base64 后体积会变大, 你还是要等数据加载完才能渲染,而且更慢

    转 base64 只适合散碎图片,如图标之类的, 整合成一个文件加快加载速度,

    如果是本地页面的话, 你想骚套路也不是不可以,随便搞, 还能方便加密混淆
    mxT52CRuqR6o5
        10
    mxT52CRuqR6o5  
       2023-01-29 12:01:31 +08:00
    3000 个图片传统方案是雪碧图 /fonticon ,对业务代码有一定入侵
    churchill
        11
    churchill  
       2023-01-29 12:15:38 +08:00
    看到 雪碧图 这个翻译忍不住要吐槽
    zephyru
        12
    zephyru  
       2023-01-29 12:23:00 +08:00
    一个可视区内为例,3000 张一个可视区,用 base64 大概是,先等所有图片下载完再展示(我就当你是嵌在 html 里了)
    相对路径则是先展示轮廓再展示,浏览器并发,不同浏览器不一样通常是 6 ~ 8 个,所以 3000 张同屏怎么也会有先后顺序
    你要全部加载完哪个更快?主要看设备,通常来说,一个大文件会比 3000 个小文件快,取决于大小差异和实际使用的 http 协议,用 http3.0 的话,小文件估计会快一点,1.0 大文件会快一点。
    个人建议,用相对路径,需要一次性展示的话自己控制图片的加载完再展示,而不是使用 base64 这样完全不可控。
    一个可视区放不下的情况,比如滚动加载,就别 base64 了,没啥意义。
    IvanLi127
        13
    IvanLi127  
       2023-01-29 12:28:25 +08:00 via Android
    3000 个图片。。要不 http/2.0 ?
    Huelse
        14
    Huelse  
       2023-01-29 13:20:00 +08:00
    如果图片要更新的话不如懒加载,看那些壁纸站也是这么做的
    unt
        15
    unt  
    OP
       2023-01-29 13:39:55 +08:00
    是 3000 张相同的图片,可以认为是图标, 我说的有歧义,骚瑞~
    28Sv0ngQfIE7Yloe
        16
    28Sv0ngQfIE7Yloe  
       2023-01-29 13:58:11 +08:00
    3000 是每次固定还是随机?
    tigaDark
        17
    tigaDark  
       2023-01-29 15:52:35 +08:00
    1.一个页面放下了 3000 个图片,也无法全部显示
    tigaDark
        18
    tigaDark  
       2023-01-29 15:56:39 +08:00
    2.静态资源+相对路径 用的是 http 获取图片
    3.base64 则是用类似字符码? 直接显示在页面上
    4.浏览器的 http 并发请求大概是 8-10 条
    5.性能得看你的电脑配置,图片大小 综合看...
    unt
        19
    unt  
    OP
       2023-01-29 16:24:47 +08:00
    @tigaDark #18 同一张图片只请求一次,只会有一个 http 请求,而且有缓存,实际渲染时不需要发 http
    Alander
        20
    Alander  
       2023-01-29 16:41:12 +08:00
    一个页面放得下 3000 个图片?如果放不下就懒加载随便怎么选;如果放得下 http1.1 就用雪碧图吧
    laqow
        21
    laqow  
       2023-01-29 18:52:14 +08:00
    感觉看引擎和硬件渲染。另外渲染 css 背景,img 标签,或者 appendChild Image 对象的性能应该都不同
    daoqiongsi1101
        22
    daoqiongsi1101  
       2023-01-29 18:55:10 +08:00
    @for8ever 用 http/2 协议就没你说的这个问题
    cleveryun
        23
    cleveryun  
       2023-01-29 21:05:40 +08:00 via Android
    @unt 3000 个相同图片的话,那必然是用 http 地址比 base64 好,而且好太多了,3000 个一样的 http 地址,你只为图片浪费了 2k 带宽,3000 个 base64 你需要 3k x 3000 =9000k 带宽。你审查下用 base64 的 img 标签,内容是直接塞进 html 里的,有几个就是几倍的大小。
    rb6221
        24
    rb6221  
       2023-01-29 21:40:26 +08:00
    肯定不是一个屏幕几千张啊。用懒加载就行了,一个屏幕最多也就一百张左右
    superares
        25
    superares  
       2023-01-29 23:08:45 +08:00 via iPhone
    可以看下 Google 的图片搜索,前面两排左右的结果是 base64 ,后面的就是图片地址了。base64 就是为了快速出图片,但是不适合大量图片
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     911 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:59 PVG 03:59 LAX 12:59 JFK 15:59
    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