使用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值和位置值的一些变体,但没有成功。谷歌搜索了一段时间,但无济于事,所以正确方向的任何一点都会很棒。
答案 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