• 请不要在回答技术问题时复制粘贴 AI 生成的内容
robolwq
V2EX  ›  程序员

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

  •  1
     
  •   robolwq · Dec 31, 2019 · 13063 views
    This topic created in 2502 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    另外,同一网站,使用 http 协议和 https 协议,测试结果有可能是不一样的,比如: https://www.163.com 是支持 HTTP/2 的,但是 http://www.163.com 就不支持。
    ceet
    ceet
    Jan 2, 2020
    59
    支持 QUIC 一年多了
    129ykx733D016U2n
    129ykx733D016U2n
    Jan 2, 2020
    60
    博客已支持 HTTP/2 https://imoegirl.com
    jinliming2
    jinliming2
    Jan 2, 2020 via iPhone
    61
    @unicloud HTTP 下不支持 h2 是因为浏览器强制要求的,主流浏览器都拒绝实现 HTTP 协议下的 h2c,只实现了 HTTPS 下的 h2。
    所以你用 HTTP 访问的时候就只能是 HTTP/1.1
    pmispig
    pmispig
    Jan 3, 2020
    62
    @jinliming2 之前开启过 http/2 因为安卓客户端的底层库版本低,所以一直有问题,后来我就不打算趟这种雷了,没什么好处
    jinliming2
    jinliming2
    Jan 4, 2020 via iPhone
    63
    @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 )。

    当然,如果你遇到问题的解决方案就是逃避问题的话,那当我没说……
    Jason1021
    Jason1021
    Mar 5, 2020
    64
    @unicloud http 和 https 走的端口应该不一样,https 和 http2 走的是 443 端口
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   922 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 104ms · UTC 22:34 · PVG 06:34 · LAX 14:34 · JFK 17:34
    ♥ Do have faith in what you're doing.