I’ve said it before and I’ll say it again: browsers, especially mobile ones, should give information about the speed of the connection they’re on, so that we know whether to send the high-res images or lowsource ones.
Currently no browser gives any sort of information about connection speed — they don’t even have access to it. Still ... well, let’s say that it’s possible that this will change in the future. But we need to figure out exactly how the system should work.
So this post asks a few questions, and the comments are open.
One clarification: I’m not talking about connection type but about connection speed. Wifi can be slow in a busy coffeeshop to the extent that it’s actually faster to download web sites over 3G. I don’t care if someone is on wifi or LTE or 3G, I want the browser to tell me the actual speed.
How would we web developers read out the connection speed?
navigator.connectionSpeed, also makes sense.
bandwidthmedia query with matching
max-bandwidth. Sure, why not?
Any other output you’d like to see?
For units we should stick to the standard: Mbps, Kbps, Bps, where the B is bits, and not bytes, as always with connection speed. So the HTTP header, JS property, and media query would contain something like
More suggestions for units? Seems like a no-brainer to me, but maybe I’m overlooking something.
So all in all I favour something like taking the average connection speed over the last five minutes or so. Although better than a snapshot, it’s not perfect, either. What if the user just started browsing, and there is no reading for the speed in the previous five minutes?
Thoughts? This is far and away the trickiest part.
Suppose a user is in a train, and goes to a website on her smartphone. The current connection is excellent. The HTTP header reports this fact to the server, which decides on high-res images.
Then the train enters a tunnel with little connectivity. The connection speed drops, and loading slows to a crawl. When the style sheet finally arrives it contains a
bandwidth media query to decide between high-res and lowsource background images.
Should the media query stick with what the header said?
If it does it gives false information. If it doesn’t you end up with high-res images but lowsource background images, which could be confusing.
How should we solve this conundrum? Or should we ignore it and assume the user understands that something went wrong due to the slow connection?
How much can we expect the user to understand of the whole connection problem? I mean, a bad connection is universally understood. Isn’t it?
Comments here are closed. Please continue the discussion in the next entry.
Upcoming speaking gigs:
Comments are closed.