对于 http2,如果整体数据大小相同,XHR 的数量对性能有影响吗?

With http2, does number of XHRs have any effect on performance if overall data size is the same?

据我所知,HTTP/2 不再为每个请求使用单独的 TCP 连接,这是协议的主要性能提升器。

这是否意味着我使用 10 个 XHR,每个 XHR 包含 10kB 的内容,还是使用一个 XHR,每个包含 100kB 的内容,然后在客户端拆分这些部分?

精确的答案需要针对您的具体案例的基准。

更笼统地说,从客户端的角度来看,如果您可以同时发出 10 个 XHR(例如,在一个紧密循环中),那么这 10 个请求将离开客户端或多或少同时,在客户端和服务器之间产生延迟,在服务器上处理(或多或少并行取决于服务器架构),所以结果可能类似于单个 XHR - 虽然我期望单个请求更有效率。

但是,从服务器的角度来看,情况可能有所不同。 如果将单个请求可以完成的工作量乘以 10,那么现在您的服务器会看到请求率增加了 10 倍。 从网络读取、请求解析和请求分派都是服务器中高度优化的活动,但它们确实有成本,而且成本增加 10 倍可能会很明显。

服务器请求率增加 10 倍可能也会影响数据库、文件系统等,因此可能会产生连锁反应,只有在实际执行基准测试时才能注意到。

您必须权衡的其他事情是您需要在服务器中聚合事物并在客户端拆分它们的工作量;以及其他难以衡量的事情,例如代码清晰度和可维护性等。

我想说一般的实用判断在这里适用:如果你可以用一个请求完成同样的工作,为什么要发出 10 个请求?你有更具体的例子吗?

如有疑问,请测量。