繁体   English   中英

为什么我的 REST 没有通过 HTTP2 并行发布?

[英]Why my RESTs not issued in parallel over HTTP2?

我有一个 Angular 网站,需要向后端发送 REST 请求。 为了更快地获取所需数据,我想利用 HTTP/2 协议,该协议允许通过单个连接进行多个并行请求。

这是我的 Angular 11 代码(打字稿),循环发送 40 个请求:

const observables: Observable<RecordingStepScreenshot>[] = [];

const endpoint = ...;

for (let i = 0; i < 40; i++) {
    observables.push(this.http.get<RecordingStepScreenshot>(endpoint));
}

forkJoin(observables).subscribe((result) => {
    console.log('execution of all calls has been finished');
});

在上面的片段中,我并行发出 40 个 HTTP “get”请求。 我使用“forkJoin”来等待所有可观察对象的完成。

我期待所有这些都将在大约同一时间(并行)发布和完成。 但是,在浏览器(Chrome 96)中,我看到请求一个接一个地以瀑布方式发出:

在此处输入图像描述

我错过了什么?

如果有人会发现它有用:

正如我在其他一些 SO 答案中发现的那样,当 Chrome 看到对同一目的地的多个请求时(这是我在示例中所做的) - 它等待上一个请求完成以保存下一个调用。 可以通过禁用缓存(缓存无存储标头)来更改此行为。 正如预期的那样,将多个请求发送到不同的目的地会并行发出所有请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM