ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CHROME浏览器发送HTTP最大请求并发数限制

2022-03-03 12:33:33  阅读:271  来源: 互联网

标签:浏览器 请求 GET CHROME console 并发 HTTP 响应 pending


一、先上结论:

①同一域名下,同一GET请求的并发数是1,也就是说上一个请求结束,才会执行下一个请求,否则置入队列等待发送;

②同一域名下,不同GET/POST请求的并发数量是6。当发送的请求数量达到6个,并且都没有得到响应时,后面的请求会置入队列等待发送。

二、测试

1、服务器端

服务器端创建了一个GET请求的serve方法和一个POST请求的serve方法,方法内容都是保持方法执行时间≥3s。

package com.example.demo.controller;

import com.alibaba.fastjson.JSON;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin({"*"})
public class MainController {

    @GetMapping("/index")
    @ResponseBody
    public Object index(@RequestParam String id) {
        sleep3seconds();
        return JSON.toJSONString("a get method");
    }

    @PostMapping("/index2")
    @ResponseBody
    public Object index2() {
        sleep3seconds();
        return JSON.toJSONString("a post method");
    }

    private void sleep3seconds() {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

2、请求端

①同一GET请求

for (let i=0; i<10; i++) fetch("http://localhost:8080/index?id=1", {method: "get"}).then(r=>r.json()).then(d=>console.log(d));

结果

可以看到从第一个请求pending开始,后面的请求都是pending状态。随着前一个请求的响应结束,后面的请求陆续也得到了响应。各个请求的响应时间如下图:

比较奇怪的是,10个请求当中,后面3个请求的响应结束时间是一样的按理说,如果存在阻塞的话,这3个请求应当会间隔3s左右才会陆续结束才对。感觉浏览器当中还存在某种机制待挖掘。后面再调查。

②不同的GET请求

for (let i=0; i<10; i++) fetch("http://localhost:8080/index?id="+i, {method: "get"}).then(r=>r.json()).then(d=>console.log(d));

结果:

达到最大并发数:6之后,再有请求进入会pending,并且会非常规律地每6个请求一批,没有上面那种情况的幺蛾子。

③POST请求

for (let i=0; i<10; i++) fetch("http://localhost:8080/index2", {method: "post"}).then(r=>r.json()).then(d=>console.log(d));

结果:

和②的结果一致,6个请求一批,非常规律。

④补充一种情况(同①)

开启控制台,network一栏下勾选disable cache,再进行①的测试,结果竟然和②③是一致的,出现了允许最大6个并发的请求这种结果。然而在实际使用web应用的时候,也不会进行这种操作,所以不知道是否有其他开发手段有同样的效果。

①的情况确实比较意外,阻塞就阻塞吧,突然又开始并发了,待确认如果有了解的大佬,望指点迷津,不甚感激

标签:浏览器,请求,GET,CHROME,console,并发,HTTP,响应,pending
来源: https://blog.csdn.net/iijik55/article/details/123250856

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有