打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Web前端离线缓存应用

项目中需要将在线的Web改造成支持离线版本的Web应用,思考了四种方法:

1.Manifest文件

它的特点有以下三点:

1.1 Manifest文件有变化才有更新

1.2一次必须更新完Manifest中的所有文件

1.3更新完成后下次生效

操作方式如下:

1.在html的开始标签中,我们指定一个.manifest文件

<html lang="en" man[ifest="/offline.manifest">
2
.由于manifest文件的MIME类型为text/cache-manifest,因此需要在服务器端配置:

1.apache服务器需要在mime.types中加入以下配置:text/cache-manifestmaifest。或者可以在.htacess中加入以下配置 AddType text/cache-manifest.maifest。

  1. <span style="font-size:14px;color:#666666;">CACHE MANIFEST  
  2. #v1  
  3.   
  4. CACHE:  
  5. basic_page_layout_ch4.html  
  6. css/main.css  
  7. img/atwiNavBg.png  
  8.   
  9.   
  10. NETWORK:  
  11. *  
  12.   
  13. FALLBACK:  
  14. //offline.html</span>  

属性:

NETWORK:部分罗列了所有不需要被缓存的文件,你可以将看成一个”在线白名单“。此处罗罗列的文件在网络畅通的情况下都会直接跳过缓存。如果你想网络内容在网络畅通个的情况下及时更新,可以在此处使用* 。星号呗成为在线白名单通配符。

FALLBACK:部分使用/字符定义了一个URL模板,他的作用是访问每个页面时都会问”缓存中有这个页面吗?“如果有则显示缓存页面,如果没有,则显示指定的offline.html文件。

2.Local storage

local storage的特点是永久存储,也就是持久化本地存储的表现。
2.1.接口与事件
它采用键值对的数据存储方式,完全以字符串的形式存储。
localStorage.getItem(key),用于获取指定key本地存储的值。
localStorage.setItem(key,value),该接口用于将value的值村吃到key字段中。
localStorage.removeItem(key),用于删除指定key在本地存储的值。
localStorage.length
localStorage.key(index),用于返回指定的key。
localStorage.clear().用于清除所有的本地存储

3.SessionStorage

该方法的接口和事件与localStorage是一样的,不同的是它是会话级别的数据,当关闭了页面之后,这些数据就会被删除。

4.Web SQL

该方法是web端的数据库方法,用于存储一些具有复杂数据结构的数据形式和以上几种无法存储的文件等。



考虑到数据类型的不同,主要采取以下方法进行存储:

主页使用 第一种格式存储。

CSS样式、js动作,样本文件js,内容js采用localstorage存储。

复杂数据格式采取Web SQL存储。



代码如下:
[javascript] view plain copy
print?
  1. <script type="text/javascript">  
  2.     $(document).ready(function () {  
  3.         console.log('ready %o',new Date());  
  4.         var APP_START_FAILED = "I'm sorry, the app can't start right now.";  
  5.         function startWithResources(resources, storeResources) {  
  6.   
  7.             // Try to execute the Javascript  
  8.             try {  
  9.                 //eval(resources.js); v6  
  10.                 insertScript(resources.js);  
  11.                 setTimeout(function(){  
  12.                     APP.applicationController.start(resources, storeResources);                   
  13.                 },500);  
  14.   
  15.             // If the Javascript fails to launch, stop execution!  
  16.             } catch (e) {  
  17.                 alert(APP_START_FAILED);  
  18.                 console.log('%o',e);  
  19.             }  
  20.         }  
  21.         function startWithOnlineResources(resources) {  
  22.             startWithResources(resources, true);  
  23.         }  
  24.   
  25.         function startWithOfflineResources() {  
  26.             var resources;  
  27.   
  28.             // If we have resources saved from a previous visit, use them  
  29.             if (localStorage && localStorage.resources) {  
  30.                 resources = JSON.parse(localStorage.resources);  
  31.                 startWithResources(resources, false);  
  32.   
  33.             // Otherwise, apologize and let the user know  
  34.             } else {  
  35.                 alert(APP_START_FAILED);  
  36.             }  
  37.         }  
  38.   
  39.         // If we know the device is offline, don't try to load new resources  
  40.         if (navigator && navigator.onLine === false) {  
  41.             startWithOfflineResources();  
  42.   
  43.         // Otherwise, download resources, eval them, if successful push them into local storage.  
  44.         } else {  
  45.             $.ajax({  
  46.                 url: 'api/resources/',  
  47.                 success: startWithOnlineResources,  
  48.                 error: startWithOfflineResources,  
  49.                 dataType: 'json'  
  50.             });  
  51.         }  
  52.         function insertScript (script) {  
  53.             var node=document.createElement('script');  
  54.             node.innerHTML=script;  
  55.             document.head.appendChild(node);  
  56.         }  
  57.   
  58.     });  
  59. </script>  







本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
HTML5新特性:Web应用缓存实现离线浏览
使用 HTML5 开发离线应用
九种浏览器端缓存方法知多少
前端HTML5几种存储方式的总结
任务9 使用HTML5数据存储
HTML5 存储API介绍 | 开发人员中心
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服