Does this mean that if there is a difference in the host / port combination or sending requests to, say, two different addresses, the requests will be executed sequentially?
You want to say "parallel" and not consistently?
This condition should be understood as follows - no more than 6 requests for one server connection (host: port). Yes, Apache / Nginx can listen simultaneously on 2 ports, then it’s like 12 requests. But from the client side it is very difficult to find out.
In the case of different hosts, requests are made "in parallel" (I personally checked on several projects). In the case of different ports did not check, but I think that will also work. However, when the hosts are virtual (and sit with one ip), then it seems that it still does not exceed the limit of 6 requests. But here I have too contradictory results. Therefore, it will be necessary to separately investigate this question and figure out - the host is a domain name or ip.
HttppipeliningAllowedAttribute
This thing allows you to send multiple requests without waiting for answers at once. Naturally, the server must support http / 1.1. That is, many requests are sent, and then we expect answers, but this is all within the same connection. Requests for different hosts cannot use this feature. The special advantage of this option comes when the requests are small, independent and there are many of them, and the network and their processing are terribly slow.
As I understand it, this can partly or even completely offset the time spent on rezolving a domain name and the so-called TCP handshake. ?
Yes maybe. Or maybe not:)
What is the number of such connections will be the most effective?
And here everything is very specific. It is possible that there will be no win at all. It will be won if you need to execute a request very quickly (for example, use the scrolling list and load another piece of data or it plays a game on the exchange where it needs to react very quickly and a delay of 0.3 seconds can cost a fortune) - In this case, it makes sense to make a preconnect.
And if you just need to perform one or two requests, then what do preconnect do, what don’t you do, there’s no difference. Because the first request all the same will execute this most.
As always, benchmarks help in such cases. I know of one case where a person did something like a crawler bots and was asked how he adjusts the config for maximum performance. After a lot of questioning, it turned out that he first starts a special test script that will run the program at various settings and selects the maximum. Yes, this script sometimes worked for several days, but then it squeezed all the juices from the servers.