整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

基础面试题07:HTML5的离线储存怎么使用,解释一下其工作原理?

.在用户没有与因特网连接时,可以正常访问站点或应用。

2.在用户与因特网连接时,更新用户机器上的缓存文件。

原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

如何使用:

一、页面头部像下面一样加入一个manifest的属性;

二、在cache.manifest文件的编写离线存储的资源;

CACHE MANIFEST
#v0.11

CACHE:

js/app.js
css/style.css

NETWORK:
resourse/logo.png

FALLBACK:
/ /offline.html

离线存储的manifest一般由三个部分组成:

1.CACHE:表示需要离线存储的资源列表,由于包含manifest文件的页面将被自动离线存储,所以不需要把页面自身也列出来。

2.NETWORK:表示在它下面列出来的资源只有在在线的情况下才能访问,他们不会被离线存储,所以在离线情况下无法使用这些资源。不过,如果在CACHE和NETWORK中有一个相同的资源,那么这个资源还是会被离线存储,也就是说CACHE的优先级更高。

3.FALLBACK:表示如果访问第一个资源失败,那么就使用第二个资源来替换他,比如上面这个文件表示的就是如果访问根目录下任何一个资源失败了,那么就去访问offline.html

三、在离线状态时,操作window.applicationCache进行需求实现。

着Web App的发展,越来越多的移动端App使用HTML5的方式来开发,除了一些HybridApp以外,其他一部分Web App还是通过浏览器来访问的,通过浏览器访问就需要联网发送请求,这样就使得用户在离线的状态下无法使用App,同时Web App中一部分资源并不是经常改变,并不需要每次都向服务器发出请求,出于这些原因,HTML5提出的一个新的特性:离线存储。通过离线存储,我们可以通过把需要离线存储在本地的文件列在一个manifest配置文件中,这样即使在离线的情况下,用户也可以正常使用App。

首先来讲解下离线存储的使用方法,说起来也很简单。只要在你的页面头部像下面一样加入一个manifest的属性就可以了。

<!DOCTYPE HTML>
<html manifest = "cache.manifest">
...
</html>

然后cache.manifest文件的书写方式,就像下面这样:

CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html

离线存储的manifest一般由三个部分组成:

1.CACHE:表示需要离线存储的资源列表,由于包含manifest文件的页面将被自动离线存储,所以不需要把页面自身也列出来。

2.NETWORK:表示在它下面列出来的资源只有在在线的情况下才能访问,他们不会被离线存储,所以在离线情况下无法使用这些资源。不过,如果在CACHE和NETWORK中有一个相同的资源,那么这个资源还是会被离线存储,也就是说CACHE的优先级更高。

3.FALLBACK:表示如果访问第一个资源失败,那么就使用第二个资源来替换他,比如上面这个文件表示的就是如果访问根目录下任何一个资源失败了,那么就去访问offline.html。

浏览器怎么解析manifest

那么浏览器是怎么对离线的资源进行管理和加载的呢?这里需要分两种情况来讨论。

  • 在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
  • 离线的情况下,浏览器就直接使用离线存储的资源。

这个过程中有几个问题需要注意。

  • 如果服务器对离线的资源进行了更新,那么必须更新manifest文件之后这些资源才能被浏览器重新下载,如果只是更新了资源而没有更新manifest文件的话,浏览器并不会重新下载资源,也就是说还是使用原来离线存储的资源。
  • 对于manifest文件进行缓存的时候需要十分小心,因为可能出现一种情况就是你对manifest文件进行了更新,但是http的缓存规则告诉浏览器本地缓存的manifest文件还没过期,这个情况下浏览器还是使用原来的manifest文件,所以对于manifest文件最好不要设置缓存。
  • 浏览器在下载manifest文件中的资源的时候,它会一次性下载所有资源,如果某个资源由于某种原因下载失败,那么这次的所有更新就算是失败的,浏览器还是会使用原来的资源。
  • 在更新了资源之后,新的资源需要到下次再打开app才会生效,如果需要资源马上就能生效,那么可以使用window.applicationCache.swapCache()方法来使之生效,出现这种现象的原因是浏览器会先使用离线资源加载页面,然后再去检查manifest是否有更新,所以需要到下次打开页面才能生效。

对于HTML5中离线存储对象window.applicationCache有几个事件需要我们关注下:

1.oncached:当离线资源存储完成之后触发这个事件

2.onchecking:当浏览器对离线存储资源进行更新检查的时候会触发这个事件

3.ondownloading:当浏览器开始下载离线资源的时候会触发这个事件

4.onprogress:当浏览器在下载每一个资源的时候会触发这个事件,每下载一个资源就会触发一次。

5.onupdateready:当浏览器对离线资源更新完成之后会触发这个事件

6.onnoupdate:当浏览器检查更新之后发现没有资源更新的时候触发这个事件

TML 5 是最新的超文本标记语言 (HTML),它是用于描述网页内容和外观的标准编程语言。如今,所有主要浏览器(ChromeSafariFirefoxOpera IE)都提供 HTML5 支持,这使其成为当今使用的最新 HTML 技术。

下面列出了 HTML5 的一些惊人优势:

1. 跨浏览器兼容性

HTML5 易于实现,并且可以与 CSS3 一起使用。今天所有的浏览器都支持 HTML5 标签,甚至 IE6 也能理解标记 <!doctype html> 并且会正确地呈现页面。

2. 新的 DOCTYPE 声明:

关于 HTML 5 最重要的事实是 - HTML5 易于实现并且可以与 CSS3 一起使用

HTML5 DOCTYPE 声明非常简单:

<! DOCTYPE html>

是的,只有DOCTYPE”和“html”这两个词,不再有长行充满脏标签的不可读代码。

3. 带来可用性和用户体验的改进

可用性和用户体验与网站或应用程序的设计程度有关。我们都想要更好的动态网站和美观的应用程序与用户交互并允许用户享受功能、内容等,而不仅仅是看它。HTML5 Web 具有多项技术增强和改进功能,并且使用 HTML5 代码,Web 开发人员可以轻松设计更好的应用程序和动态网站,从而带来更好的用户体验和可用性。

4. 替代 Flash Silver light

HTML5超越FlashSilver light而领先只是因为播放Flash文件和Silver light需要安装Adobe Flash最新版本或Silver light插件,还需要注意设备和操作系统的兼容性. HTML 5 并非如此。因此,HTML5 如今在公司中变得越来越流行,因为它提供了大量的属性和功能,可帮助 Web 开发人员以最少的工作量构建漂亮的网站和应用程序。


5. 大量用于移动应用和游戏

HTML5 在移动应用程序和游戏开发中的适应性随着 HTML5 Web 应用程序工具在从用户界面 (UI)、开发、使用脚本等开始的所有情况下为 Web 开发人员提供了更大的灵活性而增加。

HTML5 还能够处理多媒体内容,而无需安装插件,我们可以使用该技术轻松开发交互式游戏。

6. 干净的标记和改进的代码

HTML5 带有简洁的标记和简洁的代码,使其比以前的版本更易于访问。HTML 5 允许 Web 开发人员和 Web 设计人员使用更简洁的代码并删除 div 标签并将所有 div 标签替换为新的 HTML 5 元素。

7. 离线浏览

HTML5 还提供离线浏览功能,这意味着访问者可以在没有有效互联网连接的情况下加载网页上的某些元素。假设你访问了该站点,但不知何故你现在没有连接到互联网,或者互联网连接发生故障。使用 HTML5 离线缓存,我们仍然可以加载网站的核心元素,你可以离线查看它们。

8. HTML5 在网站抓取和索引方面对 SEO 友好:

如今,为了在包括谷歌在内的不同搜索引擎中获得并保持最高排名,必须小心优化网站和所有必要的 SEO 模块。HTML 5 带有各种属性和模块,使网络爬虫可以轻松搜索你的内容并使其正确编入索引,从而提高其在搜索引擎搜索结果页面中的排名。HTML5 的技术提供了具有广泛结构元素、语义、表单类型、新属性和媒体元素的各种功能,使数字营销专家和开发人员更容易专注于更好的搜索引擎优化技术并推动更多的自然搜索流量。


9. 视频和音频支持

借助 HTML5 技术,我们不再需要依赖第三方插件来渲染音频和视频。你可以忘记 Flash Player 和其他第三方媒体播放器和插件。你可以使用新的 HTML5 <video> <audio> 标签轻松访问你的视频和音频。

以前你必须使用旧的 <embed> <object> 标签并分配大量参数,以显示视频可见并正常工作。但是使用 HTML5 的视频和音频标签,我们可以将它们视为图像; <video src=url/>

我们只需要像任何其他 HTML 元素一样在单行标签中定义高度、宽度和自动播放等参数:<video src=url width=800px height=500pxautoplay/>

10. 地理位置支持

在地理定位的帮助下,我们可以轻松地找出我们在世界上的位置,并轻松地与人们分享这些信息。过去,如果我们想首先检测客户端设备的位置,我们必须查看客户端 IP 地址、你的无线网络连接、手机的基站和纬度和经度。但是对于 HTML5,已经开发了一组 API,它们可以有效地允许客户端设备(即你的手机、IP 甚至你的桌面浏览器)使用你的 HTML5 兼容浏览器直接可用的 JavaScript 检索地理定位信息。

HTML5 改进并增强了浏览体验。那么为什么不为你的网站和移动应用程序采用 HTML 5 呢?


了解更多