We maintain a server-side reporting application for a client. On one reporting page, there are several heavy database calls in the middle of the page, causing the page to take 5-10sec to render.
Problem: When accessing the page via an iPad over AT&T 3G, the page successfully loads about 50% of the time. Sometimes, however, Mobile Safari renders the top half of the page and then gives a "Server Connection Was Reset" error.
Background information
So now I'm not sure what to think. If it's a network issue, why does Opera Mini work and not Mobile Safari given otherwise identical circumstances? But then... if it's a Mobile Safari issue, why does Mobile Safari work fine over a broadband+Wifi connection?
Is Mobile Safari using different timeout settings based on whether it's on broadband or wifi? I don't know if that's a.... thing that it does or not.
To award the bounty points, I guess I'm looking for an answer that specifically addresses one or both of the following questions (1) Does Mobile Safari vary its timeout settings based on the type of the currently active network connection (2) Is there some kind of known specific thing with AT&Ts proxy servers being twitchy and terminating connections that have been idle for a few seconds? Like: "Yes, they will terminate an idle connection after 4.25 seconds"
I think the short answer is that 3G data connections are unreliable. That's partly down to physics -- it just can never be as reliable as a wired connection -- and partly down to games that the carriers play.
Almost all carriers seem to use transparent proxy servers that have varying degrees of brokenness.
I can't say for sure what AT&T are doing, but I can list a few things that I've seen from customers of my app (which accesses a REST web service):
For a long time I assumed it was a latent bug in my code, but then a tried my app on a handset on Vodafone rather than O2...
Unless you're in a corporate environment and can assume one particular carrier, there's not much you can do other than to make your code more resilient. I've tried to make my code:
I think the last point is the most important one, though it's impossible to do 100% of the time unfortunately.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With