views:

11933

answers:

8

I am trying to build an iPhone web application using ASP.NET. The page is dynamically rendered once for each visitor. At this point the page can be bookmarked and it will never change again for that visitor. For this reason it should be cached locally from that point on so the application will run if referenced from the bookmark even if no network connection is available. No matter what I try the phone continues to request the page from the server forcing a re-render or it fails if the phone is offline.

Louis Gerbarg suggested in this post that I use HTML5 Cache Manifest to get this working however following the w3.org docs does not appear to work for the iPhone. Does anyone have a good example where application cache is working?

+3  A: 

I answered your previous question related to this, but it was not clear from that question that you were trying to cache dynamic content. The cache manifest is for getting static content you want for offline web apps to work.

I am not sure you can do what you want. Do you want the app to be able to function offline, or are you just trying to peg something in the cache because it is slow to download? Unless you are actually constructing an offline webapp (which the user will add to as a bookmark or an app in the Spring Board) then your page can (and must necessarily) be evicted from local storage at the browsers discretion, regardless of how loose a cache policy you set on the page.

Louis Gerbarg
Thanks!, I Added some clarification to the post
Jamey McElveen
A: 

It could be to do with the size of the output.

I can't talk from any serious experience in tweaking things specifically for an iphone, but there is an intersting read from the YUI team here: http://yuiblog.com/blog/2008/02/06/iphone-cacheability/, which indicates that the largest unzipped cache file that can be held in an iphone is 25k, and that for optimal caching, as many components as possible should be <25k.

That may be the cause of your problems, but that's only a guess.

seanb
+1  A: 

You should use the Safari Javascript Database API which should work for iPhone and Safari 3.1. It works great for local caching and data storage:

http://developer.apple.com/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/

leonho
A: 

A little bit off topic, but if you're building for iPhone using ASP.NET you might want to check out Ra-Ajax which is compatible with iPhone and uses extremely small amounts of bandwidth (due to seriously low JS size)

Thomas Hansen
+2  A: 

The cache manifest file has to be served with a 'text/cache-manifest' mime-type. This is absolutely critical, it will not work without it. If you navigate to the url of your manifest file, it should trigger a download...

Also, I've found that putting the manifest location in the tag as an absolute location, as well as all the entries in the manifest file to be more effective.

+1  A: 

If anyone is interested here is a simple demo of the app cache i built for proof of concept. You need to check what your browser supports but this works in FF 3.5 and Safari on the IPhone http://demos.hahana.co.uk/app-cache-demo.html

Andy Monis
A: 

I have the same problem there: When i call http://www.pharao.mobi/WebAppproblem/index4.html (first u have to login), first time it loads the images, second time , i just see ? instead of the images,...

any idea? I can also pay for your help, not much,because student,...but i can pay a little bit

Ploetzeneder