Http2 服务器推送支持



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

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

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

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

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

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

你可以再试一次:

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

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

协议 h2c http/1.1

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

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

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

相关内容

最新更新