I’d like to be able to use the html5 cache manifest to store images locally on an iPhone that is visiting the page via a UIWebView within an app.
I’ve set up a sample that I think conforms to the specs, and appears to work in safari 4 and mobile safari, but not in my app’s UIWebView.
The sample html is set up at http://bynomial.com/html5/clock3.html.
This is very similar to the sample provided in the HTML5 draft standard.
Here is the entire (non-template) code of the sample app I’m using for testing:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// I thought this might help - I don't see any difference, though.
NSURLCache* cache = [NSURLCache sharedURLCache];
[cache setDiskCapacity:512*1024];
CGRect frame = [[UIScreen mainScreen] applicationFrame];
UIWebView* webView = [[UIWebView alloc] initWithFrame:frame];
[window addSubview:webView];
NSString* urlString = @"http://bynomial.com/html5/clock3.html";
NSURL* url = [NSURL URLWithString:urlString];
NSURLRequest* request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
[window makeKeyAndVisible];
}
I’ve reviewed a few related questions on stackoverflow, but they don’t seem to provide info to solve this. For example, I’m pretty sure the files I’m trying to cache are not too large, since they are just a couple small text files (way < 25k).
Any ideas for how to get this to work?
I got this to work using a .manifest file in a UIWebView. I discovered the trick on the Apple developer forums.
you must deliver the proper mime-type for the manifest file: it must be of type “text/cache-manifest” – if it is anything else, then you won’t get your files cached.
you can use web-sniffer at http://web-sniffer.net/ to look at the headers returned by your server.
if you are using .htaccess files on your web server, then add the following line to the .htaccess file:
make sure to clear your browser cache after making this change to see the effect.
HTH
Mark
edit: this is only supported on iOS 4.0 and later. You will need to implement your own caching mechanism for iOS 2.x and 3.x 🙁