我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用HTTP/2服务端推送技术加速Node.js应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用HTTP/2服务端推送技术加速Node.js应用

本篇内容介绍了“如何使用HTTP/2服务端推送技术加速Node.js应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我们想让现今使用 Node.js 构建的网站能够更加轻松的获得性能提升。为此,我们开发了 netjet 中间件,它可以解析应用生成的 HTML 并自动添加  Link 头部。当在一个示例的 Express 应用中使用这个中间件时,我们可以看到应用程序的输出多了如下 HTTP 头:

如何使用HTTP/2服务端推送技术加速Node.js应用

netjet 使用了带有定制插件的 PostHTML 来解析 HTML。目前,netjet 用它来查找图片、脚本和外部 CSS  样式表。你也可以用其它的技术来实现这个。

在响应过程中增加 HTML  解析器有个明显的缺点:这将增加页面加载的延时(到加载***个字节所花的时间)。大多数情况下,所新增的延时被应用里的其他耗时掩盖掉了,比如数据库访问。为了解决这个问题,netjet  包含了一个可调节的 LRU 缓存,该缓存以 HTTP 的 ETag 头部作为索引,这使得 netjet 可以非常快的为已经解析过的页面插入 Link  头部。

不过,如果我们现在从头设计一款全新的应用,我们就应该考虑把页面内容和页面中的元数据分开存放,从而整体地减少 HTML 解析和其它可能增加的延时了。

任意的 Node.js HTML 框架,只要它支持类似 Express 这样的中间件,netjet 都是能够兼容的。只要把 netjet  像下面这样加到中间件加载链里就可以了。

var express = require('express'); var netjet = require('netjet'); var root = '/path/to/static/folder'; express()   .use(netjet({     cache: {       max: 100     }   }))   .use(express.static(root))   .listen(1337);

稍微加点代码,netjet 也可以摆脱 HTML 框架,独立工作:

var http = require('http'); var netjet = require('netjet'); var port = 1337; var hostname = 'localhost'; var preload = netjet({   cache: {     max: 100   } }); var server = http.createServer(function (req, res) {   preload(req, res, function () {       res.statusCode = 200;       res.setHeader('Content-Type', 'text/html');       res.end('<!doctype html><h2>Hello World</h2>');   }); }); server.listen(port, hostname, function () {   console.log('Server running at http://' + hostname + ':' + port+ '/'); });

netjet 文档里有更多选项的信息。

查看推送了什么数据

如何使用HTTP/2服务端推送技术加速Node.js应用

访问本文时,通过 Chrome 的开发者工具,我们可以轻松的验证网站是否正在使用服务器推送技术(LCTT 译注: Chrome 版本至少为  53)。在“Network”选项卡中,我们可以看到有些资源的“Initiator”这一列中包含了Push字样,这些资源就是服务器端推送的。

不过,目前 Firefox  的开发者工具还不能直观的展示被推送的资源。不过我们可以通过页面响应头部里的cf-h3-pushed头部看到一个列表,这个列表包含了本页面主动推送给浏览器的资源。

希望大家能够踊跃为 netjet 添砖加瓦,我也乐于看到有人正在使用 netjet。

Ghost 和服务端推送技术

Ghost 真是包罗万象。在 Ghost 团队的帮助下,我把 netjet 也集成到里面了,而且作为测试版内容可以在 Ghost 的 0.8.0  版本中用上它。

如果你正在使用 Ghost,你可以通过修改 config.js、并在production配置块中增加 preloadHeaders  选项来启用服务端推送。

production: {   url: 'https://my-ghost-blog.com',   preloadHeaders: 100,   // ... }

“如何使用HTTP/2服务端推送技术加速Node.js应用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用HTTP/2服务端推送技术加速Node.js应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Java 11 HTTP Client API实现HTTP/2服务器推送

这篇文章将为大家详细讲解有关如何使用Java 11 HTTP Client API实现HTTP/2服务器推送,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对 HttpUrlConnection 你还有印象
2023-06-02

编程热搜

目录