jquery/standards — Issue #1:  Cache Manifest is Too Hard to Adopt
Author: paulirish
Created: 2011-10-20 03:12:11+00:00
State: open

Because the cache manifest requires that the main HTML asset is cached, it is difficult for people with existing pages to adopt it. If they wanted to use the cache manifest, they would have to change their site to make the main index.html more permanent, and use JavaScript to update the content on the main page and prompt the user to refresh.

## Specific Issues

* Use of the cache manifest mandates a user-implemented refresh-to-update UI.
* It is not possible to use the cache manifest for offline support without also opting in to its aggressive non-blocking behavior when the user agent is online.
* If any resources in the CACHE section return a 404, the entire cache manifest is disabled

## Specific Suggestions

* It should be possible to declare that the main HTML resource should only be non-blockingly served from the cache if the user agent is offline. If the user agent is online, a single blocking request would first verify the freshness of the cache using the existing semantics.
* Action Item: What is the syntax for this?
* Open question: Can this be added without breaking existing cache manifest parsers?
* External Contact: W3C
* It should be possible to declare that certain resources are optional. If a resource is optional, a 404 response code for the resource would not invalidate the entire app cache.
* This would retain the current atomicity of the existing application cache semantics, while allowing optional exceptions.
* Action item: What is the syntax for this?
* Open question: Can this be added without breaking existing cache manifest parsers?
* External Contact: W3C
* There should be browser behavior to prompt the user to reload a page where the cache has updated.
* External Contact: Browser Vendors

## General Open Questions

What is a cache manifest group?

## References

http://www.stevesouders.com/blog/2011/10/03/improving-app-cache/
http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html