`
li463968565
  • 浏览: 2005 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HTML5 离线缓存 applicationCache 通过iframe直接缓存远程服务器文件。

 
阅读更多

    通过几天的研究HMTL5的离线缓存,网上资料查了很多,翻书也看了,折腾来折腾去终于搞定。下面是我的理解,希望对新手有帮忙。

 

一、什么是Cache Manifest

话说,作为一个 web 开发相关的人员,都不会少听到、看到 cache 这个词。是的,上面也已经说了,它是一种缓存的机制。它可以通过一个 .manifest 文件来配置需要缓存的或者一定要保持联网缓存的文件。而重点就是这个 .manifest 文件,具体的可以 Google 一下,而简单的我帮你整理一下现在可能会希望了解的东西:

 

MIME TYPE:text/cache-manifest

需要由你创建的:NAME.manifest

作用:主要是配置需要缓存的文件

 

二、创建test.manifest 文件

CACHE MANIFEST

#version 5.0

# 直接缓存的文件

 CACHE:

#绝对路径 和 相对路径都可以

js/initial.js

js/keyevent.js

js/uianimate.js

js/jquery.min.js

loading.gif

bg.jpg

jquery-mini-1.8.2.js

# 需要在时间在线的文件*号代表除了上面缓存文件都是在线访问

NETWORK:

*

# 替代方案

FALLBACK

online.html off.html

三、给 index.hmtl <html> 标签加 manifest 属性

<html manifest=" test.manifest ">

index.hmtl 页面可以写一些事件

 

//手动更新 window.applicationCache.update();

applicationCache.onchecking = function(){

   //检查manifest文件是否存在

 

}

applicationCache.ondownloading = function(){

  //检查到有manifest或者manifest文件

  //已更新就执行下载操作

  //即使需要缓存的文件在请求时服务器已经返回过了

}

 

applicationCache.onnoupdate = function(e){

  //返回304表示没有更新,通知浏览器直接使用本地文件   

}

 

applicationCache.onprogress = function(){

  //下载的时候周期性的触发,可以通过它

  //获取已经下载的文件个数

}

 

applicationCache.oncached = function(){

  //下载结束后触发,表示缓存成功

}

 

applicationCache.onupdateready = function(){

  //第二次载入,如果manifest被更新

  //在下载结束时候触发

  //不触发onchched

  alert("本地缓存正在更新中。。。");

  if(confirm("是否重新载入已更新文件")){

  applicationCache.swapCache();// 得到最新版本缓存列表,并且成功下载资源,更新缓存到最新  

  location.reload();

  }

}

//清单 5 手动更新缓存

//if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { window.applicationCache.update(); }

 

applicationCache.onobsolete = function(){

  //未找到文件,返回404或者401时候触发

}

 

applicationCache.onerror = function(){

  //其他和离线存储有关的错误

}

四、出现的问题

按照上面的方法可以缓存,但是这个情况是test.manifest文件和需要缓存的文件在同一项目下面。

现在出现的问题是我访问本地文件就缓存index.html 相关的文件。

本地文件loading.html 并且本地没有 test.manifest

当时我就想在loading.html 页面设置如下:

<html manifest=" http://....../ test.manifest  "> 这样缓存不了

五、怎么解决本地文件去动态缓存服务器文件

在loading.html 页面加上iframe 标签 SRC 指向的是服务器文件 Cache.html

<html id="html" manifest='test.manifest'>
<head>
    <title>loading</title>
     
</head>
<body>
     
</body>
<script type="text/javascript">
	var url=location.href.split("mac=");
	url=url[1].split("&");
	var mac=url[0];
	var user=url[1].split("user=")[0];
	applicationCache.onupdateready = function(){
	   //第二次载入,如果manifest被更新 http://172.249.0.89:8081/ftp/sangsang/
	   //在下载结束时候触发
	   //不触发onchched
	   alert("本地缓存正在更新中。。。");
	   if(confirm("是否重新载入已更新文件")){
		   applicationCache.swapCache();// 得到最新版本缓存列表,并且成功下载资源,更新缓存到最新  
		   location.reload();
	   }
	   localStorage.setItem("mac", mac);
	   localStorage.setItem("user"  , user);
	  
	} 
</script>
</html>

 这样就可以缓存动态页面了,写着写着 就觉得说不清楚了,如果有什么不知道的可以加我QQ 463968565 答案:是

 

分享到:
评论

相关推荐

    html5 application cache遇到的严重问题

    HTML5的Application Cache(通常简称为AppCache)是一种允许网站缓存资源以提供离线服务的技术。它通过定义在manifest文件中的指令来管理缓存的内容,支持Web应用程序离线使用。然而,这项技术并非完美无缺,它在...

    HTML+CSS+CSS3高频面试题_88题.pdf_前端面试题

    - 使用方法:添加manifest属性,编写manifest文件,离线时操作window.applicationCache。 9. **HTML语义化**: - 使用合适的标签描述页面内容,提高可读性和可访问性。 - 有助于搜索引擎优化,便于源码阅读和...

    从入门到精通HTML5——PDF——网盘链接

     1.3.1 HTML文件的编写方法 5  1.3.2 文件开始标签&lt;html&gt; 7  1.3.3 文件头部标签&lt;head&gt; 7  1.3.4 文件标题标签&lt;title&gt; 7  1.3.5 文件主体标签&lt;body&gt; 7  1.3.6 编写文件的注意事项 8 ...

    几个HTML5入门学习的好例子(代码)

    通过`Application Cache`,开发者可以指定哪些资源需要被缓存,这样即使在离线状态下,用户也能继续浏览或使用网页的部分功能。 2. **本地存储(Storage)**:`storage`文件可能涵盖Web Storage,包括`localStorage...

    网页版HTML5愤怒的小鸟在线效果

    5. **离线存储**:HTML5的离线存储机制(如Application Cache或Service Worker)可以缓存游戏资源,使得用户在没有网络连接时也能继续玩游戏。 6. **音频API**:HTML5的Audio API允许开发者在网页中播放和控制音频...

    The Essential Guide to HTML 5

    - `applicationCache` 接口允许开发者声明哪些资源应该被缓存,以便在离线时使用。 - localStorage 和 sessionStorage 为数据持久化存储提供了新的途径,它们分别用于长期和会话级别的存储需求。 #### 知识点四:...

    22个HTML5 技巧

    7. **离线存储(Offline Storage)**:HTML5的`Application Cache`允许网页在离线状态下也能访问,通过缓存关键资源提高用户体验。 8. **拖放功能(Drag and Drop)**:`drag`和`drop`事件使得网页元素可以直接进行...

    5月最新大厂前端高频核心面试题.pdf

    3. HTML5的文件离线储存主要通过Application Cache(AppCache)和Web Storage API(包括localStorage和sessionStorage)来实现。工作原理涉及浏览器缓存策略、本地数据库存储以及与服务器的交互协议。 HTML高级面试...

    2022web前端面试题

    12. HTML5离线储存:利用`applicationCache`或Service Worker实现离线存储,允许应用程序在离线状态下仍能访问部分数据。 13. 离线储存资源管理与加载:浏览器会缓存指定的资源,并在离线时使用缓存中的文件,...

    前端面试题

    - **HTML5离线存储**通过`applicationCache`接口实现。开发者可以在`manifest`文件中指定离线可用的资源列表,浏览器在首次加载页面时会下载这些资源,并缓存在本地,即使网络断开也能访问页面。 **11、浏览器是...

    干货前端工程师面试题汇总内含题目解析和详细答案

    - **离线存储**主要通过`applicationCache`接口实现,开发者可以通过manifest文件指定哪些资源需要离线存储。 - 当用户访问页面时,浏览器会下载并缓存manifest文件中指定的所有资源,以便在离线状态下仍然能够访问...

    前端面试题大全-李立超老师.zip

    - 了解HTML5的新特性,如离线存储(Application Cache)、拖放功能、Web Workers等。 2. CSS样式与布局: - CSS选择器的优先级计算,以及如何使用BEM、OOCSS等命名规范。 - 浮动(float)与清除浮动的原理及解决...

    ratemyrecipe

    此外,HTML5还支持本地存储(localStorage)和离线缓存(Application Cache),这对于一个食谱应用来说,可以使得用户在离线状态下也能查看已保存的食谱。 总的来说,"ratemyrecipe"项目利用HTML作为基础构建了一个...

    web前端笔试面试

    - **离线储存**: 包括`localStorage`, `sessionStorage`和`Application Cache`。 - **原理**: 数据被缓存于客户端,即使断网也能访问应用的一部分。 **11. 浏览器对HTML5离线储存资源管理与加载?** - 浏览器会...

    I-m-thinking-of-ending-things

    15. **离线缓存**:HTML5的`applicationCache`(现已被弃用)或Service Worker技术,能让网站在离线状态下也能运行。 通过掌握这些HTML知识,开发者能创建功能丰富、交互性强的网页。同时,结合CSS和JavaScript,...

    电子商务应用

    5. **离线存储**:`&lt;application cache&gt;`和`localStorage`允许电子商务应用在离线状态下仍能提供一定程度的服务,比如缓存商品信息或用户购物车数据。 6. **图形与图像**:HTML5的`&lt;canvas&gt;`元素和SVG(Scalable ...

    IE8+SpringMVC文件上传防止JSON下载

    在使用IE8浏览器配合SpringMVC框架进行文件上传的过程中,可能会遇到一个问题,即在上传文件时,服务器返回的JSON数据被浏览器误处理为需要下载的文件,而不是直接在页面上显示JSON内容。这种情况通常是由于浏览器的...

    C#编程经验技巧宝典

    111 &lt;br&gt;0184 如何在ASP.NET中获取文件的扩展名 111 &lt;br&gt;0185 如何在ASP.NET中用URL在页面之间传值 112 &lt;br&gt;0186 如何使用IsPostBack实现ASP.NET页面加载 112 &lt;br&gt;0187 如何利用输出缓存技术缓存...

    js使用小技巧

    clip:rect(5px 15px 15px 5px)"&gt; 获取选中内容 document.selection.createRange().duplicate().text 自动完成功能 打开该功能 关闭该功能 窗口最大化 (window.screen.width - 4,window.screen.height-...

Global site tag (gtag.js) - Google Analytics