通过几天的研究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(通常简称为AppCache)是一种允许网站缓存资源以提供离线服务的技术。它通过定义在manifest文件中的指令来管理缓存的内容,支持Web应用程序离线使用。然而,这项技术并非完美无缺,它在...
- 使用方法:添加manifest属性,编写manifest文件,离线时操作window.applicationCache。 9. **HTML语义化**: - 使用合适的标签描述页面内容,提高可读性和可访问性。 - 有助于搜索引擎优化,便于源码阅读和...
1.3.1 HTML文件的编写方法 5 1.3.2 文件开始标签<html> 7 1.3.3 文件头部标签<head> 7 1.3.4 文件标题标签<title> 7 1.3.5 文件主体标签<body> 7 1.3.6 编写文件的注意事项 8 ...
通过`Application Cache`,开发者可以指定哪些资源需要被缓存,这样即使在离线状态下,用户也能继续浏览或使用网页的部分功能。 2. **本地存储(Storage)**:`storage`文件可能涵盖Web Storage,包括`localStorage...
5. **离线存储**:HTML5的离线存储机制(如Application Cache或Service Worker)可以缓存游戏资源,使得用户在没有网络连接时也能继续玩游戏。 6. **音频API**:HTML5的Audio API允许开发者在网页中播放和控制音频...
- `applicationCache` 接口允许开发者声明哪些资源应该被缓存,以便在离线时使用。 - localStorage 和 sessionStorage 为数据持久化存储提供了新的途径,它们分别用于长期和会话级别的存储需求。 #### 知识点四:...
7. **离线存储(Offline Storage)**:HTML5的`Application Cache`允许网页在离线状态下也能访问,通过缓存关键资源提高用户体验。 8. **拖放功能(Drag and Drop)**:`drag`和`drop`事件使得网页元素可以直接进行...
3. HTML5的文件离线储存主要通过Application Cache(AppCache)和Web Storage API(包括localStorage和sessionStorage)来实现。工作原理涉及浏览器缓存策略、本地数据库存储以及与服务器的交互协议。 HTML高级面试...
12. HTML5离线储存:利用`applicationCache`或Service Worker实现离线存储,允许应用程序在离线状态下仍能访问部分数据。 13. 离线储存资源管理与加载:浏览器会缓存指定的资源,并在离线时使用缓存中的文件,...
- **HTML5离线存储**通过`applicationCache`接口实现。开发者可以在`manifest`文件中指定离线可用的资源列表,浏览器在首次加载页面时会下载这些资源,并缓存在本地,即使网络断开也能访问页面。 **11、浏览器是...
- **离线存储**主要通过`applicationCache`接口实现,开发者可以通过manifest文件指定哪些资源需要离线存储。 - 当用户访问页面时,浏览器会下载并缓存manifest文件中指定的所有资源,以便在离线状态下仍然能够访问...
- 了解HTML5的新特性,如离线存储(Application Cache)、拖放功能、Web Workers等。 2. CSS样式与布局: - CSS选择器的优先级计算,以及如何使用BEM、OOCSS等命名规范。 - 浮动(float)与清除浮动的原理及解决...
此外,HTML5还支持本地存储(localStorage)和离线缓存(Application Cache),这对于一个食谱应用来说,可以使得用户在离线状态下也能查看已保存的食谱。 总的来说,"ratemyrecipe"项目利用HTML作为基础构建了一个...
- **离线储存**: 包括`localStorage`, `sessionStorage`和`Application Cache`。 - **原理**: 数据被缓存于客户端,即使断网也能访问应用的一部分。 **11. 浏览器对HTML5离线储存资源管理与加载?** - 浏览器会...
15. **离线缓存**:HTML5的`applicationCache`(现已被弃用)或Service Worker技术,能让网站在离线状态下也能运行。 通过掌握这些HTML知识,开发者能创建功能丰富、交互性强的网页。同时,结合CSS和JavaScript,...
5. **离线存储**:`<application cache>`和`localStorage`允许电子商务应用在离线状态下仍能提供一定程度的服务,比如缓存商品信息或用户购物车数据。 6. **图形与图像**:HTML5的`<canvas>`元素和SVG(Scalable ...
在使用IE8浏览器配合SpringMVC框架进行文件上传的过程中,可能会遇到一个问题,即在上传文件时,服务器返回的JSON数据被浏览器误处理为需要下载的文件,而不是直接在页面上显示JSON内容。这种情况通常是由于浏览器的...
111 <br>0184 如何在ASP.NET中获取文件的扩展名 111 <br>0185 如何在ASP.NET中用URL在页面之间传值 112 <br>0186 如何使用IsPostBack实现ASP.NET页面加载 112 <br>0187 如何利用输出缓存技术缓存...
clip:rect(5px 15px 15px 5px)"> 获取选中内容 document.selection.createRange().duplicate().text 自动完成功能 打开该功能 关闭该功能 窗口最大化 (window.screen.width - 4,window.screen.height-...