zoukankan      html  css  js  c++  java
  • HTML5的离线储存

    关键字:.appcache文件

    解释:

    在用户没有与因特网连接时,可以正常访问站点或应用;在用户与因特网连接时,更新用户机器上的缓存文件。

    原理:

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

    如何使用:

    ① 页面头部像下面一样加入一个manifest的属性。

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

    ② 在cache.manifest文件的编写离线存储的资源。

    CACHE MANIFEST
        	#v0.1
        	CACHE:
       	 	js/index.js
        		css/index.css
        	NETWORK:
        		images/logo.png
        	FALLBACK:
        		*.html /404.html /* / /404.html 或 /html/ /404.html 也可*/

    以#号开头的是注释,一般会在第二行写个版本号,用来在缓存的文件更新时,更新manifest以实现浏览器重新下载新的文件,可以是版本号,时间戳或md5码等。

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

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

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

    ③ FALLBACK:可选,表示如果访问第一个资源失败,那么就使用第二个资源来替换他,如/html/ /404.html表示用 “404.html” 替代 /html/ 目录中的所有文件,/ /404.html表示用 “404.html” 替代当前目录中的所有文件,*.html /404.html表示用 “404.html” 替代 所有html文件。 

    浏览器如何对离线存储的资源进行管理和加载:

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

    ② 离线的情况下,浏览器就直接使用离线存储的资源。

    注意:

    ① 引用manifest的html必须与manifest文件同源,在同一个域下,FALLBACK中的资源也必须和manifest文件同源。

    ② 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问。

    ③ 如果服务器对离线的资源进行了更新,那么必须更新manifest文件(如更新manifest的版本等)之后这些资源才能被浏览器重新下载,如果只是更新了资源而没有更新manifest文件的话,浏览器并不会重新下载资源,也就是说还是使用原来离线存储的资源。

    ④ 浏览器在下载manifest文件中的资源的时候,它会一次性下载所有资源,如果某个资源由于某种原因下载失败,那么这次的所有更新就算是失败的,浏览器还是会使用原来的资源。

    ⑤ 更新了资源后,新的资源要到下次再访问网页时才会生效,出现这种现象的原因是浏览器会先使用离线资源加载页面,再去检查manifest是否有更新,所以要到下次打开页面才能生效。如果需要资源马上就能生效,那么可以使用window.applicationCache.swapCache()方法来使之生效。

    更新缓存的三种方式:

    ① 更新manifest文件

    1)给manifest添加或删除文件。

    2)若manifest没有添加或删除文件,只是修改了文件,可以通过更改版本号等更新manifest文件。

    ② 通过javascript操作

    html5中引入了js操作离线缓存的方法:window.applicationCache.update(),可以手动更新缓存。

    ③ 清除浏览器缓存

    如果用户清除了浏览器缓存(手动或用其他一些工具),都会重新下载文件。

    使用方法小例子 :https://blog.csdn.net/dj0379/article/details/53350309

    文章来源:https://blog.csdn.net/zhouziyu2011/article/details/58588546

  • 相关阅读:
    opencv::绘制-基本几何
    公共盘访问方法(更改用户登录公共盘)
    testlink数据库访问密码修改
    SQL Server外部链接时报错:Error locating serverInstance specified
    SQL server数据库端口访问法
    python模块之wordcloud
    随性练习:python字典实现文本合并
    python模块之numpy
    python模块之openpyxl扩展
    python模块之openpyxl介绍
  • 原文地址:https://www.cnblogs.com/pengc/p/8714487.html
Copyright © 2011-2022 走看看