千家信息网

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

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,本篇内容介绍了"如何使用HTTP/2服务端推送技术加速Node.js应用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2025年02月07日如何使用HTTP/2服务端推送技术加速Node.js应用

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

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

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('

Hello World

'); }); }); server.listen(port, hostname, function () { console.log('Server running at http://' + hostname + ':' + port+ '/'); });

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

查看推送了什么数据

访问本文时,通过 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应用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

推送 应用 服务 页面 技术 头部 中间件 内容 资源 数据 更多 正在 网站 开发 可以通过 工具 开发者 情况 服务器 框架 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何使用vmware创建服务器 黑龙江web服务器租用云空间 挂号数据库设计案例 大连警校网络安全专业好吗 数据库链表查询时间过长 网络安全手机怎么画 云服务器数据 防范网络安全内容 深圳大学生网络安全比赛决赛 鹏城科技互联网 软件测试中软件开发的基本过程 网络安全负载均衡厂商 高宇网络技术有限公司客服电话 热血传奇1到10区网络服务器 软件开发要什么笔记本电脑 实时数据库和 抖音数据库表结构 web服务器连接不上网页 鑫吉顺网络技术有限公司转账 软件开发票需要什么条件 java数据库添加字段 徐州银联软件开发推荐咨询 网络安全主要涉及的领域有 天津质量软件开发供应商 启云网络技术有限公司怎么样 网络安全法和税务网络安全 山东存储服务器哪家服务好 ibm租服务器哪个牌子好 ads 怎么导出数据库 dns服务器会记录你的浏览
0