当前的XHR实现是否利用HTTP/2?

Nic*_*ngs 17 javascript xmlhttprequest http2

这可能只是突出了我的一些误解,但我很好奇:

如果您运行的HTTP/2服务器并且希望在浏览器中向服务器发出XHR请求,那么XHR会自动利用标头中的性能优化并提供它吗?

或者它会忽略该功能并作为HTTP请求运行?如果是这样,我们可以做些什么来在我们的请求中使用新的优化吗?

dsi*_*ign 22

你不需要做任何事情.如果服务器支持HTTP/2,XHR将使用它.标题压缩等将自动启动.

测试一下:

  • 在Chrome中打开HTTP/2网站.您可以使用我们的,可以查看一些关于HTTP/2 PUSH,AngularJS和RequireJS的很酷的东西.
  • 打开Devtools面板(F12),然后打开网络面板,然后单击XHR.右键单击标题行,并确保启用了"协议"列.
  • 您应该在所述列中看到"h2"(在我们的示例中,AngularJS正在通过XHR加载模板包含).
  • 当你在那时,请注意服务器推送了XHR请求.推送响应的详细信息是"临时标题"而不是请求标题,以及异常小的"下载"和"等待"时间.我们甚至在响应中添加了一个额外的标题(x-shimmmercat-note:push-stream).浏览器采用了这个请求,因此XHR请求不仅会使用HTTP/2(如果可用),而且在某些情况下可以使用推送的资源.