Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone: Performances Differences Between NSURLRequestCachePolicy Settings

When using NSURLRequest on the iPhone, what are the real world performance differences between the various NSURLRequestCachePolicy settings? I am specifically interested in the cache policy's effect on the the user's perception of the speed at which UIWebView pages display.

I have been using the default NSURLRequestCachePolicy but I think that perhaps NSURLRequestReloadRevalidatingCacheData could be best for most cases especially when going back to a previous page.

If you've used various cache policies under real-world conditions, which policy proved optimum in a particular circumstance? What policy provides the best overall performance over the three different types of iPhone connections, wi-fi, 3G and Edge? Does the cache policy even have any significant effect on the user's perception of page loading speed or should I be looking elsewhere to optimize UIWebView's display time?

Update:

There seems to be a consensus that UIWebView appears to ignore the cache settings on any NSURLRequest given it. I do not have complete confidence that this is the final answer but barring the time to do some extensive testing, I cannot gainsay it. Therefore, I am accepting the highest rated answer. However, I would advise that you take the answers with a grain of salt if the matter is of importance to your project. -- TechZen.

like image 728
TechZen Avatar asked Feb 14 '10 13:02

TechZen


2 Answers

I don't think this will make any difference on your UIWebView loading times. UIWebView is built on WebKit, and they're not using NSURLConnection internally (they are at a much lower level and use CFNetwork directly).

This is probably not what you want to hear, but probably the best way to speed up UIWebView loading time is to not use a UIWebView. Rendering web pages is pretty CPU-intensive. In fact, MobileSafari is actually mostly CPU-bound, not network-bound -- notice how long it takes it to fill in that checkerboard pattern when scrolling, for example. For really fast, quickly loading content, it's best to create a native interface in Cocoa.

like image 101
Colin Barrett Avatar answered Oct 20 '22 01:10

Colin Barrett


I a few hours for a project trying to get a UIWebView to cache pages I was loading. It proved impossible from the application side without storing the files locally. It seems that UIWebView ignores the NSURLRequestCachePolicy completely.

Yahoo! has some info on the iPhone's caching behaviour.

like image 27
Colin Gislason Avatar answered Oct 20 '22 00:10

Colin Gislason