Queuing
If a request is queued it indicated that:
- The request was postponed by the rendering engine because it's considered lower priority than critical resources (such as scripts/styles). This often happens with images.
- The request was put on hold to wait for an unavailable TCP socket that's about to free up.
- The request was put on hold because the browser only allows six TCP connections per origin on HTTP 1.
Stalled/Blocking
- Time spent making disk cache entries (typically very quick.)
- Time the request spent waiting before it could be sent. It can be waiting for any of the reasons described for Queueing. Additionally, this time is inclusive of any time spent in proxy negotiation.
Here is my understanding on that after reading the source code a bit.
Please correct me and contribute since I’m not familiar with the Chromium C source code that much.
To my understanding, the entire flow is a state machine. Starting from the queueing state and going all the way towards content download.
The next state after queueing in the machine is stalled. Ergo the state machine starts with the queueing state; it waits there for a while; then it transitions to stalled state. — it may or may not wait there (in stalled state) for a while. and then it follows the rest of the lifecycle.
So a request may (and often does) get stalled after being dequeued already.
queueing and stalled are (to my understanding) two different states in the request’s lifecycle, and they don’t have any intersection and/or parent/child relationship.
You can kind of think stalled as a stage where the requests waits after it has been already dequeued (hence queueing is not possible afterall).
As I said these are my educated guesses;
I’d appreciate any further insight on that.