我正在寻找一个能够检测访问者浏览器是否启用SPDY或HTTP/2的脚本。类似于this这样的东西。
nextHopProtocol
出现在ResourceTiming和NavigationTiming中,你就可以检测根页面和其他资源对h2
的支持。nextHopProtocol
仅在Firefox的ResourceTiming实现中提供。它在他们的NavigationTiming中不可用,在Chrome、FF和Safari的NavigationTiming和ResourceTiming中也都不可用。nextHopProtocol
为h2
,并推断HTML页面也是h2
。我没有找到一个直接的测试方法。我认为一个解决方法是编写你自己的测试 :) 你可以在caniuse.com上获取支持HTTP/2的浏览器列表,然后遍历支持浏览器的列表,如果当前为您服务的浏览器在列表中,则可以使用。
现在是2018年7月,我发现Firefox和Chrome都通过Navigation Timing 2 API暴露了这个功能:
performance.getEntriesByType('navigation')[0].nextHopProtocol
话虽如此,导航计时 Level 2 API 目前处于工作草案状态,因此对于 nextHopProtocol(该协议是在 Level 2 API 中引入的)的支持将受到限制(目前 caniuse 并不包括 Navigation Timing Level 2 API,因此无法确定确切的支持浏览器)。