HTML Application Cache 离线应用

蹉跎莫遣韶光老,人生唯有读书好。这篇文章主要讲述HTML Application Cache 离线应用相关的知识,希望能为你提供帮助。
html Application Cache (简称 HAC)是一套针对缓存应用资源的接口,通过此套接口,可以实现网页的离线访问,或者在网速较慢的情况下也能快速打开页面。
使用 HAC 之后,浏览器在请求网站的时候首先会去 cache 内查找,如果命中,则会加载命中的资源,如果没有,则向服务端请求,再加载。
HAC 与浏览器传统的缓存(304 的那种)不同的是,HAC 是将整套资源作为一个集合缓存下来,缓存的键是入口页面的 url,而不是针对单个文件缓存。
一个 HAC 网站所需要的资源是通过缓存清单( manifest) 来告知浏览器的,在清单里声明的资源将会被浏览器加入页面的 HAC 。
manifest 的声明方法如下:
页面入口 index.html

< !doctype html> < html manifest="/app.manifest"> < header> < script src="https://www.songbingjia.com/app.js"> < /script> < /header> < /html>

/app.manifest 文件
CACHE MANIFEST /index.html /app.js

之后浏览器就会将 index.html 和 app.js 作为一整套资源加入到 HAC。
在浏览器第二次打开页面的时候,就会在 HAC 中找到缓存,并加载。
但同时浏览器还会尝试去请求 /app.manifest 文件,如果请求成功,就会拿新旧两个版本的 manifest 去对比,如果发现文件内容有更改,则会按照新版 manifest 中列出的文件重新请求一遍资源,并更新到 HAC 里。如果这时有一个文件访问出错,就会导致 HAC 停止更新。但是默认 chrome 会限制 5MB 的缓存大小,如果是 chrome 应用,并想要更多缓存空间的话,则需要声明 unlimitedStorage。
在浏览器内也可以手动的运行 applicationCache.update() 去触发检查。然后通过 applicationCache.status 去判断是否需要更新 HAC。
applicationCache.status 的状态为以下几种 :
appCache.UNCACHED = 0; // 网页未缓存 appCache.IDLE = 1; // 闲置 appCache.CHECKING = 2; // 检查中 appCache.DOWNLOADING = 3; // 下载中 appCache.UPDATEREADY = 4; // 更新已准备完毕 appCache.OBSOLETE = 5; // 更新失败

// js 内主动更新的流程 var appCache = window.applicationCache; window.applicationCache.addEventListener(‘updateready‘, function(e) { if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { window.applicationCache.swapCache(); if (confirm(‘A new version of this site is available. Load it?‘)) { window.location.reload(); } } }); appCache.update(); // Attempt to update the user‘s cache.

【HTML Application Cache 离线应用】本文转载于:HTML Application Cache 离线应用







    推荐阅读