Background
Web applications consist of web pages that need to be downloaded from a network. For this to happen there must be a network connection. However, there are many instances when users cannot connect to a network due to circumstances beyond their control.Basics
In order for the offline applications to work, a cache manifest file must be created by the web developer. If the web application exceeds more than one page then each page must have a manifest attribute that points to the cache manifest. Every page referencing the manifest will be stored locally. The cache manifest file is a text file located in another part of the server. It must be served with content typetext/cache-manifest
The attribute manifest=""
must be added to the ''html'' element in order for the cache manifest file to work. Example:
Syntax
The ''manifest'' file must start with the lineCACHE MANIFEST
. Comments start with a #
, spaces and blank lines are ignored.
Given below is an example of a cache manifest file.
Example 1:
CACHE MANIFEST
/test.css
/test.js
/test.png
This manifest file lists three resources: a CSS file, a JavaScript file and a PNG image. When the above file is loaded, the browser will download the test.css, test.js and test.png files from the root directory in the web server. As a result, whenever one's network is not connected, the resources will be available to them offline.
Cache manifests can also use relative paths or even absolute URLs as shown below.
Example 2:
CACHE MANIFEST
/main/features.js
/main/settings/index.css
File headers
The cache manifest file consists of three section headers. # Explicit section with the header CACHE. # Online whitelist section with the header NETWORK. # Fallback section with the header FALLBACK. Note: Example 1 and Example 2 above, do not indicate any section header and are therefore considered an explicit section by default.Online whitelist section with the header NETWORK
Example 3: CACHE MANIFEST NETWORK: /checking.cgi CACHE: /test.css /test.js /test.png This example consists of headers. The line, NETWORK: is the start of the "online whitelist" section. The resources listed under this section are never cached and are not available offline. As a result, an error will occur when an attempt is made offline to load the resource. There is a shift to the explicit section by the header CACHE: and the resources (the CSS stylesheet, JavaScript and the image file) can be downloaded and used offline.Fallback section with the header FALLBACK
The fallback section in a cache manifest file can be used to substitute online resources that cannot be cached or were not cached successfully. Example 4: CACHE MANIFEST FALLBACK: / /offline.html NETWORK: … In Example 4, the fallback section consists of a single line. i.e., ''/ /offline.html''. The single character (''/'') before ‘offline’ will match any URL pattern on one's site. If the browser does not find the page in the appcache, the application will display the page /offline.html.Event flow
Events are under theApplicationCache
JavaScript object.
If the browser visits a web page, has NOT seen the web page before and as a result does not recognize the manifest file, the following events will ensue.
* Checking
Event - occurs when the browser visits a web page and reads the manifest attribute on the element.
* Downloading
Event - it will download all the resources given in the manifest file.
* Progress
Event - contains information of how many files have been downloaded and how many files are left to be downloaded.
* Cached
Event - occurs once all the files have been downloaded and the offline web application is equipped to be used offline.
If the browser has visited the web page before and recognizes the manifest file the following events will ensue.
* Noupdate
Event - this will take place if the cache manifest has not changed.
* Downloading
Event - if the cache manifest has changed the resources the files will be downloaded again.
* Progress
Event - this contains information of how many files have been downloaded and how many files are left to be downloaded.
* Updateready
Event - after the re-downloading is complete, this event is triggered, indicating that the new offline version is ready to be used.
If an error occurs at any instance in the above events, the browser will trigger an error event and stop the process. Given below are a few errors that can occur when re-downloading resources.
* Page Not Found ( HTTP error 404) or Page Permanently Gone (HTTP error 410).
* Failure to download the HTML page that pointed to the manifest.
* The cache manifest changed while the update occurred.
* The cache manifest was changed but the browser did not download a resource in the manifest.
See also
*References
{{Reflist, 30emExternal links