V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
13m
V2EX  ›  问与答

HTTP/2 下是否不需要再合并 CSS 文件了?

  •  
  •   13m · 2019-03-16 10:14:06 +08:00 · 2594 次点击
    这是一个创建于 1861 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在开发环境有若干个 .css 小文件,部署至生产服时会合并成一个以优化前端速度

    在 HTTP/2 环境下:
    1、这么做是不是就没必要了?
    2、载入 10 个 10KB 样式表和一个 100KB 样式表理论上前端速度是一样的吗?
    13 条回复    2019-03-16 16:37:42 +08:00
    gstqc
        1
    gstqc  
       2019-03-16 10:51:50 +08:00 via Android   ❤️ 1
    1. 同一个域名和端口,没必要。另外需要客户端支持。目前客户端支持率应该在 80%-90%之间了吧。
    2. 不懂前端,理论上应该没什么区别吧,会有依赖关系吗?
    514146235
        2
    514146235  
       2019-03-16 10:57:24 +08:00
    还是会有差异的。http2 只不过是复用了连接而已。如果你不合并,还是要读取若干小文件,也是有开销的。只不过可能性能差异不明显。能合并还是合并吧。
    otakustay
        3
    otakustay  
       2019-03-16 11:03:06 +08:00   ❤️ 4
    你算一下合并和不合并的 gzip 压缩率,可能会有些发现
    liujj
        4
    liujj  
       2019-03-16 11:23:47 +08:00 via iPhone
    @otakustay 这个角度真相了
    isCyan
        5
    isCyan  
       2019-03-16 11:26:39 +08:00 via Android
    @otakustay 真相,值得研究
    t123yh
        6
    t123yh  
       2019-03-16 12:10:10 +08:00 via Android
    @otakustay 但是如果用 brotli 的话会好一点
    gstqc
        7
    gstqc  
       2019-03-16 13:12:41 +08:00 via Android
    要优化到这种程度的话:
    1. 上 CDN,源站给最高压缩率。CDN 会缓存压缩后的版本,还省掉压缩耗时。
    2. 使用 gzip_static 和 br_static,发布时最高压缩率压缩到磁盘。1) 对于 gzip 这种,压缩文件和流式压缩的压缩率差不少的,br 这种预置字典的可能差别不大。2) 使用 gz_static br_static 模块,sendfile 功能是有效的,零拷贝,性能比即时压缩好很多。
    3. 磁盘性能没关系,Linux 有 cache,内存足够都是从 cache 读的。



    最后,你就会发现根本就是然并卵。
    nikoo
        8
    nikoo  
       2019-03-16 13:20:11 +08:00
    @otakustay 请教 gzip 压缩 10 个 10k css 和一个 100k css 压缩率有啥区别?(本以为文本内容相同的话压缩率是一样的)
    gstqc
        9
    gstqc  
       2019-03-16 13:23:48 +08:00 via Android
    4. 还有 TLS v1.3 0-RTT 少不了吧
    5. HTTP2 Server Push 也必须给上
    Chingim
        10
    Chingim  
       2019-03-16 14:47:20 +08:00 via Android
    看文件内容是不是经常变了。粒度小的话缓存效果好,但也如楼上所说,压缩率可能会有牺牲
    otakustay
        11
    otakustay  
       2019-03-16 16:15:57 +08:00   ❤️ 1
    @nikoo
    1. gzip 用字典压缩,内容更多通常字典能更高效。事实上 10K 和 100K 的文本内容有可能相同吗……
    2. 字典本身占空间
    mscststs
        12
    mscststs  
       2019-03-16 16:23:39 +08:00
    前几天刚被面试过类似的问题。私以为 1*100kb 能比 10*10kb 节省几个数据报文…… emmm,当然,楼上也提到了 gzip 的压缩率的问题。
    ladypxy
        13
    ladypxy  
       2019-03-16 16:37:42 +08:00 via iPhone   ❤️ 1
    根据 nginx 和 Cloudflare 的建议,http2 下不要合并 css,合并只会降低速度。因为不合并在 http2 下是多个并发请求,合并后变成单个只能单请求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1083 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 18:36 · PVG 02:36 · LAX 11:36 · JFK 14:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.