• 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 文件。

  • 相关阅读:
    运行ConnectionDemo时遇到的问题及解决方案
    xampp启动MySQL出现Error: MySQL shutdown unexpectedly.
    20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结
    KMS
    MAC 添加共享,脚本执行
    zabbix企业应用之windows系统安装omsa硬件监控
    SCCM大致安装过程,参考前辈教程完成部署
    MAC加域重复跳出---"talagent"想使用“本地项目” 的钥匙串
    CentOS Linux解决 Device eth0 does not seem to be present
    zabbix3.0.4 部署History
  • 原文地址:https://www.cnblogs.com/superlizhao/p/8780310.html
Copyright © 2020-2023  润新知