【问题标题】:Http2 Server Push supportHttp2 服务器推送支持
【发布时间】:2016-06-14 03:54:03
【问题描述】:

关于将服务器推送与 Http2 一起使用的快速问题/说明。

所以,我安装了 libnghttp2,然后从支持 http2 的源代码编译 Apache 2.4.18,并创建了一些自签名证书以使用 https。

然后我添加了指令 Protocols h2c http/1.1 并创建了一个虚拟主机,包括:

<Location /index.html>
    Header add Link "</css/site.css>;rel=preload"
</Location>

所以我可以测试服务器推送。用 Firefox 访问我的前端,我得到了返回的 h2 标头以及 Link 标头,其值为 /css/site.css 但我的 css 没有预加载.. 不确定我是否从根本上误解了服务器推送正在做什么或没有做什么,或者我是否做错了什么。

我尝试了一些 css 值和位置值的变体,但没有成功。谷歌搜索了一段时间,但无济于事,所以任何正确方向的点都会很棒。

【问题讨论】:

    标签: apache http ubuntu web http2


    【解决方案1】:

    协议 h2c http/1.1

    选择 h2c 将启用 http/2 clear,只有少数命令行浏览器支持。由于您使用的是 Firefox,这意味着它将默认为 http/1.1,所有主要浏览器都仅支持基于 TLS 的 HTTP/2。
    要查看 Firefox 选择的当前版本,您可以使用 this one 之类的插件,或者您可以打开开发人员工具 (F12) 并单击每个资源以查看使用的协议版本,如 here
    所述 您的 Headar add Link 命令看起来不错。
    您可以使用 nghttp 或 curl(检查您的版本是否支持 HTTP/2)命令行浏览器测试您当前的设置

    【讨论】:

      【解决方案2】:

      你可以再试一次:

      <Location /index.html>
      Header add Link "</css/site.css>;rel=preload;as=style"
      

      如果你想推送图片,你应该使用“as=image”

      【讨论】:

        【解决方案3】:

        如果您的服务器端代码是在 java 中,请尝试使用 PushBuilder 对象将您的文档推送到客户端。您的网页内容将按照 PushBuilder 对象推送的顺序缓存到客户端的浏览器中。确保您只使用一个 PushBuilder 对象来推送这些文档。

        此外,建议您使用 Protocols h2 http/1.1 而不是 Protocols h2c http/1.1

        【讨论】:

          猜你喜欢
          • 2015-06-03
          • 2017-08-31
          • 2019-08-11
          • 2018-02-25
          • 2011-05-22
          • 2016-10-24
          • 2015-12-04
          • 2017-03-04
          • 2016-10-18
          相关资源
          最近更新 更多