- From: <bugzilla@jessica.w3.org>
- Date: Thu, 07 Jul 2011 04:32:39 +0000
- To: public-html-bugzilla@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=13168 Summary: Creating or using an existing application cache without caching the master entry Product: HTML WG Version: unspecified Platform: All URL: http://dev.w3.org/html5/spec/history.html#navigating-a cross-documents OS/Version: All Status: NEW Severity: normal Priority: P3 Component: HTML5 spec (editor: Ian Hickson) AssignedTo: ian@hixie.ch ReportedBy: adrianba@microsoft.com QAContact: public-html-bugzilla@w3.org CC: mike@w3.org, public-html-wg-issue-tracking@w3.org, public-html@w3.org, israelh@microsoft.com PROBLEM ------- Many sites generate a onetime page that they don�t want cache on the client machine. This information contains user specific information that is only good for a brief timeframe (e.g. session). However, they would like to take advantage of application caches to reduce server loads and increase performance by defining a group of static resources that they would like to cache locally. The first time one of these pages is accessed, an application cache inside a cache group is created using the information in the manifest attributes. However, the newly created application cache won�t contain a master entry for that page (i.e. the page that contains the manifest URL). This behavior change will be specified via a new section inside manifest file. The next time another page with the same manifest URL is accessed, the page itself will be downloaded from the network but its resources will be accessed from the previously created application cache. Again, no master entry will be created for that page inside the application cache. After the existing cache is associated with the page being displayed, the application cache download will be initiated in the background. This will ensure the latest application cache is always being used. Because of the new semantics specified in the manifest file, the application cache will have the master entries associated with it but the master entry content won�t be cached. Specifying this new mode, �MASTER:� with a value of �[NETWORK]� will prevent any master entries from being cached in the application cache. Anything else under �MASTER:� will ignore. EXAMPLE MANIFEST FILE --------------------- CACHE MANIFEST #Version 1 MASTER: [NETWORK] CACHE: images/amazon.png FALLBACK: images/ images/stop.png NETWORK: images/off.png PROPOSED SPEC CHANGES [MSFT] --------------------- Spec Location: http://dev.w3.org/html5/spec/offline.html#manifests 5.6.3.3 Parsing cache manifests [MSFT] --> 6.5 Let the master entry cache flag be true. 20. If�line�equals "FALLBACK:" (the word "FALLBACK" followed by a U+003A COLON character (:)), then set�mode�to "fallback" and jump back to the step labeled "start of line". 21. If�line�equals "NETWORK:" (the word "NETWORK" followed by a U+003A COLON character (:)), then set�mode�to "online whitelist" and jump back to the step labeled "start of line". [MSFT] -->22. If�line�equals "MASTER:" (the word "MASTER" followed by a U+003A COLON character (:)), then set�mode�to "master" and jump back to the step labeled "start of line". 23. If�line�ends with a U+003A COLON character (:), then set�mode�to "unknown" and jump back to the step labeled "start of line". 28. Process�tokens�as follows: If�mode�is "explicit" Resolve�the first item in�tokens, relative to�base URL; ignore the rest. If this fails, then jump back to the step labeled "start of line". If the resulting�absolute URL�has a different�<scheme>�component than the manifest's URL (compared in an�ASCII case-insensitive�manner), then jump back to the step labeled "start of line". If the manifest's�<scheme>�is�https:�or another scheme intended for encrypted data transfer, and the resulting�absolute URL�does not have the�same origin�as the manifest's URL, then jump back to the step labeled "start of line". Drop the�<fragment>�component of the resulting�absolute URL, if it has one. Add the resulting�absolute URL�to the�explicit URLs. If�mode�is "fallback" Let�part one�be the first token in�tokens, and let�part two�be the second token in�tokens. Resolve�part one�and�part two, relative to�base URL. If either fails, then jump back to the step labeled "start of line". If the�absolute URL�corresponding to either�part one�or�part two�does not have the�same origin�as the manifest's URL, then jump back to the step labeled "start of line". Drop any�<fragment>�components of the resulting�absolute URLs. If the�absolute URL�corresponding to�part one�is already in the�fallback URLs�mapping as a�fallback namespace, then jump back to the step labeled "start of line". Otherwise, add the�absolute URL�corresponding to�part one�to the�fallback URLs�mapping as a�fallback namespace, mapped to the�absolute URL�corresponding to�part two�as the�fallback entry. [MSFT] -->If�mode�is "master" -->If the first line in�tokens�equals �[NETWORK]� (the word �[NETWORK]� followed by end of line U+ 000D, then set�master entry cache flag to�false, then jump back to the step labeled "start of line". Else, jump back to the step labeled "start of line". -->�[NETWORK]� is the only valid entry in this mode. If�mode�is "online whitelist" If the first item in�tokens�is a U+002A ASTERISK character (*), then set�online whitelist wildcard flag�to�open�and jump back to the step labeled "start of line". Otherwise,�resolve�the first item in�tokens, relative to�base URL; ignore the rest. If this fails, then jump back to the step labeled "start of line". If the resulting�absolute URL�has a different�<scheme>�component than the manifest's URL (compared in an�ASCII case-insensitive�manner), then jump back to the step labeled "start of line". Drop the�<fragment>�component of the resulting�absolute URL, if it has one. Add the resulting�absolute URL�to the�online whitelist namespaces. If�mode�is "unknown" Do nothing. The line is ignored. [MSFT] -->30. When the master entry cache flag is set to true, 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. 5.6.4�Downloading or updating an application cache 7. If this is an�upgrade attempt�and the newly downloaded�manifest�is byte-for-byte identical to the manifest found in the�newest�application cache�in�cache group, or the server reported it as "304 Not Modified"�or equivalent, then run these substeps: 1. Let�cache�be the�newest�application cache�in�cache group. 2. Let�task list�be an empty list of�tasks. 3. For each entry in�cache group's�list of pending master entries, wait for the resource for this entry to have either completely downloaded or failed. If the download failed (e.g. the connection times out, or the user cancels the download), then create a�task�to�fire a simple event�that is cancelable named�error�at the�ApplicationCache�singleton of the�cache host�the�Document�for this entry, if there still is one, and append it to�task list. The default action of this event must be, if the user agent�shows caching progress, the display of some sort of user interface indicating to the user that the user agent failed to save the application for offline use. [MSFT] --> Otherwise, if the master entry cache flag is set to true, associate the�Document�for this entry with�cache; store the resource for this entry in�cache, if it isn't already there, and categorize its entry as a�master entry. If the resource's�URL�has a�<fragment>�component, it must be removed from the entry in�cache�(application caches never include fragment identifiers). --> Else if the master entry cache flag is set to false, associate the�Document�for this entry with�cache; do not store the resource for this entry in cache. HTTP caching rules, such as�Cache-Control: no-store, are ignored for the purposes of the�application cache download process. 17. For each URL in�file list, run the following steps. These steps may be run in parallel for two or more of the URLs at a time. [MSFT] --> 1. If the resource URL being processed was flagged as a �master entry� with master entry cache flag then the user agent needs to skip this URL. 2. If the resource URL being processed was flagged as neither an "explicit entry" nor or a "fallback entry", then the user agent may skip this URL. [MSFT] -->22. For each entry in�cache group's�list of pending master entries, wait for the resource for this entry to have either completely downloaded or failed. All these pending master entries will have the same master entry cache flag of true. 5.6.6 Changes to the networking model [MSFT] --> 2. If the resource's URL is�a master entry with a master entry cache flag of true,�the manifest,�an explicit entry, or�a fallback entry�in the�application cache, then get the resource from the cache (instead of fetching it), and abort these steps. --> 2.5 If the resource�s URL is a master entry with a master entry cache flag of false, then fetch the resource normally and abort these steps. ADDITIONAL ---------- Additional changes to this other spec may be required: http://dev.w3.org/html5/spec/history.html#navigating-across-documents 5.5.1�Navigating across documents 13. If the resource has already been obtained (e.g. because it is being used to populate an�object�element's new�child browsing context), then skip this step. Otherwise: [MSFT] --> If the new resource is to be fetched using HTTP GET�or equivalent, and there are�relevant application caches�that are identified by a URL with the�same origin�as the URL in question, and that have this URL as one of their entries, excluding entries marked as foreign or entries with a master entry cache flag of false, then get the resource from the�most appropriate application cache�of those that match. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug.
Received on Thursday, 7 July 2011 04:32:47 UTC