Http2服务器推送支持

时间:2016-03-01 16:12:18

标签: apache http ubuntu web http2

使用Http2服务器推送快速提问/澄清。

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

然后我在指令Protocols h2c http / 1.1中添加并创建了一个vhost,包括:

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

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

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

3 个答案:

答案 0 :(得分:1)

你可以再试一次:

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

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

答案 1 :(得分:1)

  

协议h2c http / 1.1

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

答案 2 :(得分:0)

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

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