Closed WarpPrism closed 6 years ago
随着Web App的发展,越来越多的移动端App采用HTML5的方式来开发。但是目前除了Hybrid App外,其他Web App还是需要通过浏览器来访问,对于移动端来说,就产生了以下两个不方便之处:
为了解决上述问题,HTML5提出了离线存储的概念。使用时,只需在App的html文件中添加manifest属性即可,如下所示:
<!DOCTYPE HTML> <html lang="en" manifest="demo.appcache"> <head> </head> ... </html>
manifest文件,也即 .appcache 文件,又称作解析清单,里面列出了要进行离线缓存的文件,和不缓存的文件。
CACHE MANIFEST #v0.11 CACHE: js/app.js css/style.css NETWORK: resource/logo.png * FALLBACK: / /404.html
它一般分为3个部分,分别是:
用户首次在线访问,浏览器发现html文件中有manifest属性,于是请求这个manifest文件,然后浏览器根据manifest文件中指定的文件列表缓存相应的资源。
用户再次在线访问,浏览器直接采用离线存储的资源加载页面,然后服务器请求新的manifest文件,如果manifest文件没有被修改,则触发Application Cache NoUpdate event,然后什么都不做。如果manifest文件发生改变,则重新下载所有资源,并进行离线存储,之后触发Application Cache UpdateReady 事件,但此时浏览器显示的还是旧的页面内容,需要再次刷新页面才行。为了解决这个用户体验问题,可在应用中采用以下代码:
// method1 简单粗暴 window.applicationCache.onupdateready = function() { applicationCache.swapCache(); location.reload(); } // method2 window.applicationCache.addEventListener('updateready', function(e) { applicationCache.update(); applicationCache.swapCache(); location.reload(); }, false);
用户离线访问,浏览器就直接使用离线存储的资源。
即js中的离线存储对象,它有以下几个常用事件:
已被W3C标准废弃
简介
随着Web App的发展,越来越多的移动端App采用HTML5的方式来开发。但是目前除了Hybrid App外,其他Web App还是需要通过浏览器来访问,对于移动端来说,就产生了以下两个不方便之处:
为了解决上述问题,HTML5提出了离线存储的概念。使用时,只需在App的html文件中添加manifest属性即可,如下所示:
manifest文件
manifest文件,也即 .appcache 文件,又称作解析清单,里面列出了要进行离线缓存的文件,和不缓存的文件。
它一般分为3个部分,分别是:
离线应用访问流程
用户首次在线访问,浏览器发现html文件中有manifest属性,于是请求这个manifest文件,然后浏览器根据manifest文件中指定的文件列表缓存相应的资源。
用户再次在线访问,浏览器直接采用离线存储的资源加载页面,然后服务器请求新的manifest文件,如果manifest文件没有被修改,则触发Application Cache NoUpdate event,然后什么都不做。如果manifest文件发生改变,则重新下载所有资源,并进行离线存储,之后触发Application Cache UpdateReady 事件,但此时浏览器显示的还是旧的页面内容,需要再次刷新页面才行。为了解决这个用户体验问题,可在应用中采用以下代码:
用户离线访问,浏览器就直接使用离线存储的资源。
window.applicationCache对象
即js中的离线存储对象,它有以下几个常用事件:
注意事项