>In the non-SPA case I'd have 2x approx. 10s of the radio blasting at full power, in the SPA case I'd have 1x 10s for the initial load of the app and maybe 2s for the second load of the 30 posts of /r/cats.

Taking that example the radio would be at it's full power state for 20 seconds in the second case and 15 seconds in the first, not 12 as you'd expect. And as soon as the connection isn't so horrible that it takes 10 seconds just to get back everything is cached the 5 seconds of high power state starts to look less and less likely, and in most cases you'll be at parity if not using more power.

The number I've optimized/seen optimized around in the past is assuming it takes about 5 seconds of inactivity for the radio to go back to low power state (It was taken from the 3G days but is still what Google's Android documentation bases it's recommendations for efficent downloads on: http://www.research.att.com/articles/featured_stories/2011_0...), so each request gives at least 5 seconds of high power usage.

Of course this just goes back to what I meant about other content dominating load times, if your connection is so bad that getting back responses for cached items takes 10 seconds, I'm sure the download time for those images and videos will be through the roof.

Reddit solved the problem of reddit on a bad connection like that long ago with .compact. Before the "mobile" reddit links were .compact links (which is why there's now an annoying banner pushing you towards the SPA). .compact links being the non-SPA version for mobile/low-bandwidth.

You can see it by appending .compact to a link: https://www.reddit.com/.compact

It had hardly any assets to load and did tiny thumbnails on the subreddit's page, and comment page, instead of trying to load a giant image of the content.

Comapre the SPA on simulated GPRS (so pretty the definition of a bad mobile connection): https://m.reddit.com/r/gifs/comments/5otign/cool_hedgehogs_d...

To the old .compact support: https://www.reddit.com/r/gifs/comments/5otign/cool_hedgehogs...

The moment you click on the SPA link it takes a whopping 30 seconds to load a preview image of the GIF. It also takes an entire minute just to load the code and assets for the SPA itself if it hasn't been cached. Compare that to 2 seconds for the .compact link's document + styling. If you're visiting that SPA on a bad connection you'd better hope those browser caches do their job, and that ProductionClient.js hasn't changed recently...

.compact worked well on the kind of connection where bandwidth was so low you'd want to evaluate content before dedicating to a 30 second wait because you clicked on "Show Comments", which used to be any mobile connection in general.

>Yeah but unlike broken browser caching this one is something YOU can influence, not having to hope your users some day have enough cash to buy a phone with proper up-to-date software.

That'd be fine if it hadn't been chugging on an iPhone 6 plus while scrolling since it's beta til now. An iPhone 6 might not be the newest hardware, but at launch (and even now), it's what most mobile developers would treat as "modern hardware" and "modern up-to-date software". Code size doesn't need to equate to how CPU intensive a script is, but it's not exactly a mystery that the SPA chugs while .compact is fast when the SPA has three times the Js and twice the CSS just for it's "core". .compact looks dated because of the few assets it uses (and trying to look like an iPhone app). Nothing would stop Reddit from making .compact links look modern, except they're clearly trying to drive .compact users to the SPA (they were much more aggressive about it back when it was in "beta")