手机版

Node.js学习教程【翻译】HTTP/2服务器推送

时间:2021-09-03 来源:互联网 编辑:宝哥软件园 浏览:

最近发布的Node.js v8.4带来了HTTP/2的体验版,可以从设置参数- expose-http2开始。

在本文中,我将介绍HTTP/2最重要的方面:服务器推送,并创建一个Node.js程序的小案例来使用它。下面就不多说了。我们来看看详细的介绍。

关于HTTP/2

HTTP/2的目的是通过支持请求和响应的完全重用来减少延迟,通过有效压缩HTTP头字段来最小化协议开销,并增加对请求优先级和服务器推送的支持。

有关HTTP/2的更多信息,请参见文章HTTP/2。

服务器推送

HTTP/2服务器推送允许服务器在浏览器请求资源之前将其发送给浏览器。

在我们转到HTTP/2之前,让我们看看它如何与HTTP/1一起工作:

在HTTP/1中,客户端向服务器发送请求,服务器返回一个包含许多外部资源链接的HTML文件(。js,css等。).当浏览器处理这个初始的HTML文件时,它开始解析这些链接并分别加载它们。

查看演示加载过程的下图。请注意时间表上的独立请求及其启动:

HTTP/1资源加载

HTTP/1就是这样工作的,这么多年来我们就是这样开发应用的。为什么要改?

当前方法的问题是,用户必须等待浏览器解析响应、查找链接和获取资源。这会延迟渲染并增加加载时间。有一些解决方案,比如内联一些资源,但也让最初的响应越来越大。

这就是HTTP/2服务器推送功能出现的地方,因为服务器可以在浏览器请求之前将资源发送给浏览器。看下图,通过HTTP/2提供同样服务的网站。查看时间线和启动器。您可以看到,HTTP/2多路复用减少了请求的数量,资源会立即与初始请求一起发送。

HTTP/2服务器推送

让我们看看今天如何在Node.js中使用HTTP/2服务器推送来加快客户端的加载时间。

一个Node.js HTTP/2服务器的推送案例

通过加载内置的http2模块,我们可以像使用https模块一样创建我们的服务器。

有趣的部分是在请求index.html时推送其他资源:

const http 2=require(' HTTP2 ')const server=HTTP2 . createsecureper({ cert,key },onRequest)函数push (stream,filePath) { const { file,headers }=getFile(file PATH)const Push headers={[HTTP2 _ HEADER _ PATH]: file PATH } stream . Push stream(Push headers,(Push stream)={ Push stream . responsewithfd(file,headers)} }函数onRequest (req,RES){//Push file with index.html if(req PATH===

您可以查看完整的案例:https://github.com/RisingStack/http2-push-example

HTTP/2节点

HTTP/2可以在许多方面帮助我们优化客户端和服务器之间的通信。

通过服务器推送,我们可以将资源发送到浏览器,减少用户的初始加载时间。

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

原文:https://blog.risingstack.com/node-js-http-2-push/

译者:金

彼得马尔顿

版权声明:Node.js学习教程【翻译】HTTP/2服务器推送是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。