Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Omit current page from HTML5 offline appcache but use cached resources

For performance purposes, I want to have some of my web pages use resources that have been cached for offline use (images, CSS, etc.) but to not have the page itself cached as the content will be generated dynamically.

One way to do this would be to refactor my pages so that they load the dynamic content via AJAX or by looking things up in LocalStorage. Details may vary, but broadly speaking, something like that.

If it's possible, I'd prefer to find a way to simply instruct the browser to use cached resources (again, images, CSS, etc.) for the page but to not actually cache the (dynamically generated) HTML content itself.

Is there a way to do that with HTML5 offline appcache? I'm under the impression that the answer is "no" because:

  • Any page that includes the manifest will be cached so I can't specify the cached resources in the page itself.
  • There is no way to tell a previous page "use offline assets for this other page but don't actually cache the HTML on that page". You have to specify the page itself, which means the HTML will be cached.

Am I wrong about that? It seems like there is probably some tricky (or not-so-tricky) way around that. Now that I've typed it out, I wonder if including the page explicitly in the NETWORK section of the appcache manifest will do the trick.

like image 258
Trott Avatar asked Nov 30 '11 01:11

Trott


2 Answers

My answer is "yes".

I have worked on a web-app where I listed all the necessary resources in the manifest, and set the NETWORK section to *.

The manifest is then included only on the main landing page. So all resources are cached the first time you visit the site and and it works a treat.

In short,

  • one of your pages must include the manifest and will therefore be cached.

    maybe you can have the manifest loaded in a iframe and not have the whole page cached, just a thought.

  • list all your resources to be cached in the CACHE section

  • set the NETWORK section to *
like image 61
gotomanners Avatar answered Oct 07 '22 13:10

gotomanners


I'm fairly certain that the answer to this is no. If you use the Network section in Chrome, then it shows which resources are loaded from the cache and which are loaded from the server. I have attempted to set the appcache as described above and the resources are always loaded from the server. Would I be correct in assuming that if the current page is not in the appcache then it wont bother to check in the appcache for any of the resources?

like image 21
user1374841 Avatar answered Oct 07 '22 13:10

user1374841