首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
robolwq
V2EX  ›  程序员

2020 年了,你的网站支持 http2 了么

  •  1
     
  •   robolwq · 51 天前 · 5761 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    HTTP2 规范( RFC7540 )在 2015 年发布,即将迈入第 5 个年头,你的网站有没有支持呢?给大家普及下 HTTP2 一些基本概念和开启方式:

    https://davidlovezoe.club/wordpress/archives/663

    63 回复  |  直到 2020-01-04 00:50:31 +08:00
    yhxx
        1
    yhxx   51 天前   ❤️ 6
    2020 年了,该上 HTTP3 了,TLS1.2 也该干掉了
    unicloud
        2
    unicloud   51 天前 via iPhone   ❤️ 1
    确实该普及下了,正好最近写了个检查网站是否开启 HTTP/2 的在线工具: https://www.dute.org/http2
    Love4Taylor
        3
    Love4Taylor   51 天前
    HTTP/3 都支持了.
    bclerdx
        4
    bclerdx   51 天前
    @unicloud 不错的在线检测工具。那么问题来了,如果检测网站的 URL 支持 HTTP/2 的话,那能说明什么呢?能代表这个网站有什么优秀的地方?
    robolwq
        5
    robolwq   51 天前
    @bclerdx 理论上,如果用现代浏览器访问支持 http2 的网站,加载会比 http1.x 更快些
    luozic
        6
    luozic   51 天前 via iPhone
    http2/http3 传输的是二进制数据,并且有复用连接的设计。http2/http1.1 都是 tcp 的,http3 基于 udp。
    id7368
        7
    id7368   51 天前 via iPhone
    都上 QUIC 了
    wangyzj
        8
    wangyzj   51 天前
    该 3 了吧
    bclerdx
        9
    bclerdx   51 天前
    @luozic 网络爆料,HTTP/1.1 也有使用多路复用技术哦。
    bclerdx
        10
    bclerdx   51 天前
    @wangyzj H2 都还没完美普及呢,H3 还要往后排了。
    luozic
        11
    luozic   51 天前 via iPhone
    @bclerdx http/1.1 和 http 的 stream 多路复用是一会事?
    zeocax
        12
    zeocax   51 天前 via Android
    @bclerdx “网络爆料”可还行
    weiruanniubi
        13
    weiruanniubi   51 天前 via Android
    应该是 QUIC+TLSv1.3
    zuokanyunqishi
        14
    zuokanyunqishi   51 天前 via Android
    h2/tls1.3
    dyy1997
        15
    dyy1997   51 天前
    昨晚连夜给 nas 登录页面加了 HTTP/3
    marcushbs
        16
    marcushbs   51 天前
    我的 CDN 支持就行了
    slyang5
        17
    slyang5   51 天前
    http3 马上出来了 http2 设计本身存在缺陷
    azh7138m
        18
    azh7138m   51 天前 via Android
    国内 UDP 感人,我看我们项目 QUIC 错误有万五,比 HTTP/2 高不少。
    pmispig
        19
    pmispig   51 天前
    暂时不打算支持,很多安卓 APP 的老的基础库不支持 http2
    jinliming2
        20
    jinliming2   51 天前 via iPhone
    @weiruanniubi QUIC 是 h3 的试验品,就类似于 SPDY 和 h2 的关系差不多,现在 h3 标准出了,QUIC 之前的实验版本就都过时了
    jinliming2
        21
    jinliming2   51 天前 via iPhone
    @pmispig 高版本 HTTP 都是向下兼容的,就算是你部署了 HTTP/3,不支持的用户仍旧可以使用 HTTP/2 或是 HTTP/1.1 (只要你不主动禁用低版本就行)。
    不能因为部分用户使用旧库不支持新技术,你就拉着大批使用新设备的用户也体验不到新技术啊……
    sobigfish
        22
    sobigfish   51 天前
    @jinliming2 他这是为了少数"用户"在“惩罚”大多数用户
    wnanbei
        23
    wnanbei   51 天前
    H2 的设计能有哪些新的应用方式呢?除了能加快加载速度以外
    kile
        24
    kile   51 天前
    @unicloud 国内有哪些大型网站开启 h2 了?
    kile
        25
    kile   51 天前
    我测试半天只测出一个淘宝....
    puilu
        26
    puilu   51 天前
    证书花钱。。。个人续费证书很贵啊
    dzyou2007
        27
    dzyou2007   51 天前 via iPhone
    @puilu 现在免费证书一大把,当然如果你非得认为付费证书才是证书那么当我没说
    puilu
        28
    puilu   51 天前
    @dzyou2007 第二年又到处找免费的,没啥意思
    Vhc001
        29
    Vhc001   51 天前
    楼主,HTTP/2 的官方正式缩写是 h2,不是 HTTP2
    steley
        30
    steley   51 天前
    昨天一顿折腾,终于也用上了 HTTP/2
    Vhc001
        31
    Vhc001   51 天前   ❤️ 1
    看了下面的回帖,大多都被楼主带歪了
    http/2、http/3 ✔
    h2、h3 ✔
    http2、http3 ✘
    ayase252
        32
    ayase252   51 天前
    cdn 默认 HTTP/2,找机会上 HTTP/3
    wanguorui123
        33
    wanguorui123   51 天前 via iPhone
    反向代理啥协议都可以支持
    richangfan
        34
    richangfan   51 天前 via Android
    做的两个项目都上了
    turan12
        35
    turan12   51 天前 via iPhone
    @kile #24 QQ 邮箱
    bigtan
        36
    bigtan   51 天前 via Android
    https://estan.cn caddy 做前端,PHP7.1 后端 WordPress HTTP2 早都支持了
    404error
        37
    404error   51 天前 via iPad
    我是套 cloudflare 实现的 http/3,nginx 1.17.6 只弄了 http/2 + tls v1.3 + 0rtt,萌新不知道 http/3 怎么搞
    noobma
        38
    noobma   51 天前
    说到 http/2,小弟有个问题,大佬们都是在 nginx 那里启用 http/2 就行了吗?后端服务需要启用 http/2 吗?如果后端服务也启用的话带来的性能提升大吗?
    jinliming2
        39
    jinliming2   51 天前 via iPhone   ❤️ 1
    @puilu 免费证书 let's encrypt 已经普及多久了,几乎所有浏览器都信任……
    Vhc001
        41
    Vhc001   51 天前   ❤️ 1
    @noobma #38

    server {
       listen 80;
       listen [::]:80;
       listen 443 ssl http2;
       listen [::]:443 ssl http2;
       server_name example.com;
    renyiqiu
        42
    renyiqiu   51 天前
    有人说下 http/3 比 http/2 相比有啥优势么
    msg7086
        43
    msg7086   51 天前   ❤️ 2
    @puilu 不知道你活在哪年,不过 LE 的免费证书也已经是五年前开始的事了。
    lostpg
        44
    lostpg   51 天前 via Android   ❤️ 1
    @noobma nginx 的建议是后端使用 http 1.1 在网络条件良好的情况下 http 1.1 是最好的选择,后端用 h2 似乎还会有反效果。
    tt67wq
        45
    tt67wq   51 天前
    这就要看 gayhub 啥时候支持了
    EXChen
        46
    EXChen   51 天前
    @unicloud 你的工具感觉有点问题,输入我的网址出错了,最后在这个站点( https://myssl.com )检测的。
    EXChen
        47
    EXChen   51 天前
    我的站点使用了阿里云的全站加速,直接支持到 HTTP2 了。
    luozic
        48
    luozic   50 天前 via iPhone
    @lostpg nginx 完整的支持 http stream 的版本得收费套件。
    404error
        49
    404error   50 天前
    @Love4Taylor 谢谢大佬>.<
    我看了你的博客后,才知道你原来写过相关的教程啊!
    yafoo
        50
    yafoo   50 天前 via Android
    没有 http2,网站都不好意思上线
    sleepm
        51
    sleepm   50 天前 via Android
    h5 情何以堪
    kirbykfc
        52
    kirbykfc   50 天前   ❤️ 1
    @noobma nginx 也只能启用 nginx 端的 h2 了,后端不能启用,因为 nginx 不支持 h2 反代且以后也不会支持。如果想在后端启用 h2,可以使用 haproxy。
    BFDZ
        53
    BFDZ   50 天前
    http/2 早就支持了,还启用了 TLS1.3
    uqf0663
        54
    uqf0663   50 天前 via Android
    微信小程序 ios 不支持 http2,安卓正常,脑壳疼
    conn4575
        55
    conn4575   50 天前 via Android
    有一个问题,h2 不是支持服务端推送吗?如果光 nginx 开启 h2,服务端不开的话应该也用不了吧
    hifumi
        56
    hifumi   50 天前   ❤️ 1
    @puilu Let's Encrypt 是永久免费的啊, 而且有官方提供的自动续期脚本
    xenme
        57
    xenme   50 天前 via iPhone
    还不支持 https
    unicloud
        58
    unicloud   50 天前
    @kile 根据我的测试,目前国内支持 HTTP/2 的大型网站有:

    - qq.com
    - taobao.com
    - tmall.com
    - jd.com
    - sina.com.cn
    - sohu.com
    - toutiao.com
    - douyin.com

    让人意外的是,baidu.comweibo.com 竟然都不支持 HTTP/2。

    另外,同一网站,使用 http 协议和 https 协议,测试结果有可能是不一样的,比如: https://www.163.com 是支持 HTTP/2 的,但是 http://www.163.com 就不支持。
    ceet
        59
    ceet   50 天前
    支持 QUIC 一年多了
    fredshao
        60
    fredshao   50 天前
    博客已支持 HTTP/2 https://imoegirl.com
    jinliming2
        61
    jinliming2   50 天前 via iPhone
    @unicloud HTTP 下不支持 h2 是因为浏览器强制要求的,主流浏览器都拒绝实现 HTTP 协议下的 h2c,只实现了 HTTPS 下的 h2。
    所以你用 HTTP 访问的时候就只能是 HTTP/1.1
    pmispig
        62
    pmispig   49 天前
    @jinliming2 之前开启过 http/2 因为安卓客户端的底层库版本低,所以一直有问题,后来我就不打算趟这种雷了,没什么好处
    jinliming2
        63
    jinliming2   48 天前 via iPhone
    @pmispig 根据 h2 的协议升级方式,只有客户端主动告知服务器客户端支持 h2 的时候,服务端才会采用 h2 与客户端进行通信,否则将自动降级使用 HTTP/1.1。

    也就是说,如果客户端使用的是旧版本类库,不支持 h2,那么在请求服务器的时候就不会带有任何 h2 相关信息,服务端也就知道客户端不支持 h2,理应使用 HTTP/1.1 进行响应,以兼容旧设备。
    而如果客户端支持 h2,按照标准,在进行 TLS 握手的时候,客户端会主动在 TLS 扩展中自动添加 h2 关键字,告诉服务器这个客户端支持 h2,服务器在响应的时候就可以同意使用 h2 进行响应了。

    所以,根据 h2 的协商原理,如果客户端不支持的话,那么对客户端是完全无感知,直接兼容使用 HTTP/1.1 的,除非是做了某些错误的配置(比如在服务端禁用了 HTTP/1.1 )。

    当然,如果你遇到问题的解决方案就是逃避问题的话,那当我没说……
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3160 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:22 · PVG 21:22 · LAX 05:22 · JFK 08:22
    ♥ Do have faith in what you're doing.