作家
登录

通过 Node.js, Express.js 实现 HTTP/2 Server Push

作者: 来源: 2017-04-24 12:06:30 阅读 我要评论

HTTP/2 是 Web 开辟的新标准,拥有很多不错的长处可以或许让 Web 拜访更快且开辟的工作更轻松简单。比如,惹人多路复竽暌姑传输不消归并资本,办事器推送(Server Push)资本让浏览器预加载。

该文不会讲述 HTTP/2 的所有优势。你可以经由过程上篇文┞仿懂得更多{% post_link http2-node-express %}。该文重要存眷于在 Node.js情况应用 Express.js 和 HTTP/2 库 spdy。

办事器推送(Server Push)工作方法是经由过程在一个 HTTP/2 请求中绑缚多个资本。在底层,办事器会发送一个 PUSH_PROMISE,客户端(包含浏览器)就可以应用它且不基于 HTML 文件是否须要该资本。如不雅浏览器检测到须要该资本,就会匹配到收到的办事器推送的 PROMISE 然后让该资本表示的就像正常的浏览器 Get 请求资本。显而易见,如不雅匹配到有推送,浏览器就不须要从新请求,然后直接应用客户端缓存。这推荐几篇文┞仿关于办事器推送(Server Push)的好处:

  • What’s the benefit of Server Push?
  • Announcing Support for HTTP/2 Server Push
  • Innovating with HTTP 2.0 Server Push

如今就可以开端应用 Node.js 、 Express.js 、 spdy 编写这个简单实现的带办事器推送 HTTP/2 办事器

这是个关于在 Node.js 实现办事器推送(Server Push)实践教程。为了更清楚精简,我们只实现一个路由地址 /pushy 的 Node.js和 Express.js 办事器,它会推送一个 JS 文件,正如之前所说,我们会用到一个 HTTP/2 库 spdy。

HTTP/2 和 Node.js

先解释一下,为啥在 Node.js 情况选择 HTTP/2 库 spdy。当前来说,为 Node.js 重要有两个库实现了 HTTP/2 :

  • spdy
  • http2

两个库都跟 Node.js 核心模块的 http 和 https 模块 api 很类似。这就意味着如不雅你不应用 Express ,这两个库就没什么差别。然而, spdy 库支撑 HTTP/2 和 Express,而 http2 库当前不支撑 Express。这就是为什愦我们选择应用 spdy , Express 是Node.js 合适搭配的实践标准的办事框架。之所以叫 spdy是来自于 Google 的 SPDY 协定后来进级成 HTTP/2。

HTTPS密钥和证书

要在浏览器(Firefox, Safari, Chrome, 或者 Edge)中拜访应用 HTTPS ,你须要生成密钥和证书。去搜刮 “ssl 密钥生成” 或者按照以下步调去生成密钥、证书。在该文供给的源码中没有上传生成的密钥和证书

你就可以在 Node.js 的 server 脚本中攫取 server.key 和 server.crt。

  1. $ mkdir http2-node-server-push  
  2. $ cd http2-node-server-push 
  3. $ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048 
  4. ... 
  5. $ openssl rsa -passin pass:x -in server.pass.key -out server.key 
  6. writing RSA key 
  7. $ rm server.pass.key 
  8. $ openssl req -new -key server.key -out server.csr 
  9. ... 
  10. Country Name (2 letter code) [AU]:US 
  11. State or Province Name (full name) [Some-State]:California 
  12. ... 
  13. A challenge password []: 
  14. ... 
  15. $ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt 

按照以上步调,你就会产生三个 SSL 文件:

  • server.crt
  • server.csr
  • server.key

搭建项目

起首,经由过程 package.json 初始化项目和下载项目依附:

  1. npm init -y 
  2. npm i express@4.14.0 morgan@1.7.0 spdy@3.4.0 

      推荐阅读

      实现数据中心间互通的纽带——DCI技术

    如今的数据中间早已不是一座孤立的机房,而是一个建筑群。一个数据中间可以包含很多个分支数据中间,可以说是一个数据中间群,这些分支数据中间所处的地位不合,却可以经由过程收集互联起>>>详细阅读


    本文标题:通过 Node.js, Express.js 实现 HTTP/2 Server Push

    地址:http://www.17bianji.com/lsqh/34916.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)