In a web application, I wish to present a rich user experience to viewers where available, yet I also wish to respect viewers' reluctance to pay overage fees to their Internet service provider. Several Internet service providers, especially cellular and satellite, offer fast throughput but charge what amounts to $10 per gigabyte transferred (downloaded or uploaded) over the last mile. Given my knowledge of content negotiation mechanisms already in HTTP, I had hoped that there would be a reliable automated way to detect and respect the user's preference, but that turned out not to be the case.
- Browsers generally provide no way to detect whether the user is on a metered connection. According to this answer by Bergi on Stack Overflow, this is intentionally impossible for privacy reasons.
- Trying to detect this based on a "mobile" user agent is unreliable because phones and tablets can be on unmetered Wi-Fi, laptops can be on mobile hotspots with a cellular uplink, and laptops and desktops can be on a home network with a satellite uplink.
- Nor is bandwidth testing reliable because metered LTE cellular connections have become faster than largely unmetered entry-level DSL. Consider a wireless network that actually meets the IMT's 4G spec, which include a peak data rate of 100 Mbps for mobile or 1 Gbps for a fixed station. (LTE does not meet this spec despite carriers advertising it as 4G.) But because you've paid for 5 GB (40,000 Mbit) per month, that just means you can burn through your cap in under 7 minutes for mobile or 40 seconds for fixed and then be without Internet for the rest of the day and the next four weeks.
This leaves asking the viewer. So what is the common practice for giving an anonymous visitor (not a logged-in user) the choice of a low-bandwidth or rich version of a web site? I guess low-bandwidth would have to be the default; I'm just confused as to how to present the option to view the rich version to visitors on unmetered connections who have over the years come to expect the rich version. What sites do slim and rich versions right?