Friday, 5 August 2011
HTTP Pipelining Today
I’ve been active in trying to get pipelining more widely deployed, but to date I haven’t tested mobile browsers much. So, one VM and two test pages (20 images on each) later, I asked my twitter peeps to hit it with their phones while I was watching with htracr.
The results confirm what they saw; mobile browsers do pipeline, sometimes aggressively.
A normal build of Firefox (and pretty much any desktop browser today) looks like this:
As you can see, each connection pauses for each response; no pipelining. However, in Patrick’s builds of Firefox, we can see LOTS of pipelining:
Here, you can see the multiple requests in the packet displayed on the right, as well as the bright-red requests and responses that mean that multiple messages are happening simultaneously (here, the responses are 304s, so they’re not very big). Even though Firefox is pre-warming a bunch of connections, it doesn’t need them to validate 20 images per page, very quickly.
So, if the stuff brewing in Firefox is the cutting edge of HTTP pipelining, how are the mobile browsers doing it today? First, Opera Mobile:
Opera mobile is only using two connections, and doing some pipelining, but it could do more. Opera Mini from my iPhone (in forced HTTP mode) looks like this:
Again, you see some pipelining, but there’s a lot of connections being used, which on mobile might not be the best answer.
Finally, an Android browser snapshot:
Again, a fair amount of pipelining, and lots of connections.
I’m going to be doing some work on htracr soon, both to make it easier to export the results for sharing, and to give lots more information. If anybody wants to help out, that’d be great — just go to github!