【发布时间】:2022-01-06 08:53:32
【问题描述】:
我有一个 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)中,我看到请求一个接一个地以瀑布方式发出:
我错过了什么?
【问题讨论】:
-
浏览器有最大数量的请求,它们将同时运行...
-
@Carsten 这是正确的,但仅与 HTTP 1 相关。几年前,我在我眼中看到多个(数十个)静态资源是如何通过 http 2 并行下载的。但是,我没有尝试过是时候发出 Ajax 调用了。此外,即使通过 http1 浏览器也能够发出大量 6-8 个请求,但在这里我一次只能看到一个
标签: angular google-chrome http2