zoukankan      html  css  js  c++  java
  • HTML5-应用程序缓存(Application Cache)

    一、什么是应用程序缓存?

      HTML5 引入了应用程序缓存(Application Cache),这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

    二、优势

      离线浏览 - 用户可在应用离线时使用它们

      速度 - 已缓存资源加载得更快

      减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

    三、原理

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

    四、如何使用?

      在文档的 标签中包含 manifest 属性。

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

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

    1.在文档的<html> 标签中包含 manifest 属性。

    demo.html:

    <!DOCTYPE html>
    <html lang="en" manifest="demo.appcache">
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
        <img src="img.jpg" height="500" width="900" alt="">
        其它内容...
    </body>
    </html>

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

      manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。

    manifest 文件可分为三个部分:

      CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存

      NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存,可以使用星号来指示除CACHE MANIFEST外的所有其他资源/文件都需要因特网连接。

      FALLBACK - 在此标题下列出的文件规定当页面无法访问时的替代页面(比如 404 页面)。

     demo.appcache:

    CACHE MANIFEST
    #version 1.0
    CACHE:
        img.jpg
    NETWORK:
        *
    FALLBACK:
        /demo/ /404.html

    代码意为:

      demo.html中的img在首次下载后进行缓存;其他文件内容都需要因特网连接;如果无法建立因特网连接,则用 "404.html" 替代 /demo/ 目录中的所有文件。

    注意:

      如果编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会使缓存更新,manifest 文件更改时缓存会更新。以 "#" 开头的是注释行,更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

      manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置。

    在tomcat服务器中的conf/web.xml中添加:

    <mime-mapping>
        <extension>manifest</extension>
        <mime-type>text/cache-manifest</mime-type>
    </mime-mapping>

      在开发者工具的Network面板下,可以看到img.jpg的Size为(from disk cache),意味着是从缓存中读取的。

    image.png

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

    五、更新缓存

    一旦应用被缓存,它就会保持缓存直到发生下列情况:

      用户清空浏览器缓存

      manifest 文件被修改

      由程序来更新应用缓存

    六、注意事项

      浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。

      如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程都将失败,浏览器继续全部使用老的缓存。

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

      当manifest文件发生改变时,会触发更新请求资源。系统会自动缓存引用清单文件的 HTML 文件。

  • 相关阅读:
    多测师讲解html _伪类选择器17_高级讲师肖sir
    多测师讲解html _后代选择器16_高级讲师肖sir
    多测师讲解html _组合选择器_高级讲师肖sir
    多测师讲解html _标签选择器14_高级讲师肖sir
    前端 HTML form表单标签 input标签 type属性 重置按钮 reset
    前端 HTML form表单标签 textarea标签 多行文本
    前端 HTML form表单标签 input标签 type属性 file 上传文件
    前端 HTML form表单标签 input标签 type属性 radio 单选框
    前端 HTML form表单标签 input标签 type属性 checkbox 多选框
    前端 HTML form表单目录
  • 原文地址:https://www.cnblogs.com/superlizhao/p/8780310.html
Copyright © 2011-2022 走看看