An application cache is a set of cached resources consisting of:
These are documents that were added to the cache because a browsing context was navigated to that document and the document indicated that this was its cache, using the manifest attribute.
These are the resources that were listed in the cache's manifest in an
explicit section (CACHE).
These are the resources that were listed in the cache's manifest in a fallback section.
The resource that declares the manifest (with the manifest attribute) will always get taken from the cache, whether it is listed in the cache or not, even if it is listed in an online whitelist namespace.
This means that your HTML that includes the manifest file will be always a master entry which is cached and accessed from the cache even the client is online.
Let's face it, this is a pain in the neck in same cases.
There is a simple workaround
1. create an OTHER HTML that will include the manifest file
2. from the ORIGINAL HTML remove the manifest include and create an iframe that includes the OTHER HTML
In this case the master entry will be this OTHER HTML, which does not affect whitelisting the ORIGINAL HTML.
I'd like to emphases that this is just a workaround and i'd like to have a better solution.
You can also follow the related whatwg discussion.