构建应用程序时,最理想的是延迟加载模块,还可以根据需要将它们下载为批处理1文件。 Require.js支持异步延迟加载,但不支持批处理,但http2支持批处理。他们将来会在某个时候统一吗?
有人知道吗?
由于
答案 0 :(得分:1)
HTTP / 2没有"批量"下载,因为它无法将多个文件批量组合在一起以便自动下载。
HTTP / 1.1上的HTTP / 2是多路复用和HTTP / 2推送。
通过多路复用,浏览器等客户端可以执行几乎无限数量的并发请求 - 而使用HTTP / 1.1时,它们通常只能执行6个并发请求。
通过HTTP / 2推送,服务器能够将与主要资源相关联的多个资源推送到客户端。
多路复用是协议中内置的,因此无需在客户端或服务器上进行配置。 需要在服务器上配置HTTP / 2推送。
xmlDoc.Elements("ControlSettings")
.Descendants()
.Select(e => e.Name.LocalName)
.OrderBy(e => e)
.ToList();
将受益于HTTP / 2的这些功能,但并非require.js
需要"支持"他们。
当require.js
发出下载模块的HTTP请求时,它将显示为普通的HTTP请求。
如果require.js
需要下载10个以上的模块,使用HTTP / 1.1就会发出这些请求,但是浏览器基础设施本来只能同时发出其中的6个请求,然后就会等待一些请求。在发送更多请求之前回复;使用HTTP / 2可以同时进行所有请求。
使用HTTP / 2推送,require.js
可以请求一个模块,服务器可能会发现它还需要N个其他模块(服务器将从先前的请求中学习请求模式,或者一个配置,告诉它其他模块是什么),服务器将HTTP / 2推送其他模块到客户端。
在这两种情况下,require.js
都会自动从升级到HTTP / 2中受益。