• 技术文章 >web前端 >H5教程

    HTML5缓存机制是什么?怎么更新缓存

    云罗郡主云罗郡主2019-01-04 10:45:17原创5450
    本篇文章给大家带来的内容是关于HTML5缓存机制是什么?怎么更新缓存,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。【推荐阅读:Html5教程

    u=3267752020,3013557538&fm=26&gp=0.jpg

    背景

    离线缓存是HTML5提供的新功能。利用HTML5提供的离线缓存功能可以将站点的一些常用的文件缓存到本地,在没有网络的情况下依旧可以访问缓存的页面。可以被缓存的文件类型有很多,包括但不限于html,css,js,静态图片资源等。

    事实上,离线缓存不仅仅在没有网络的情况下会被使用,当有网络的情况下,本地缓存过的文件依旧会被优先使用。有网络的情况下,浏览器会返回200,

    离线缓存有很多好处。第一,可以有效提高用户体验,节约用户流量。第二,可以提高页面加载速度,已缓存的资源加载的更快。第三,可以减少服务器负载,浏览器将只从服务器下载更新过或者更改过的资源。

    浏览器支持

    基本上所有的主流浏览器都支持,除了 IE,毕竟奇葩,像这种浏览器,还是不要去兼容了。

    Manifest

    要想在页面上使用离线缓存,只需要在页面的html 加入一个manifest属性,使用方法如下。

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

    当浏览器加载页面的时候,发现html上面拥有属性mannifest,就会去请求cache.appcache文件(ps:这只是一个文件名,一般约定以。appcache结尾,文件一般放在项目的根目录下)

    btw: mannifest这个文件需要配置 MIME-type为 “text/cache-manifest”,这是必须的。你需要在服务器上进行配置。

    我们来看一下manifest这个文件(cache.appcache)应该怎么写

    我从w3School找到了这些资料 :

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

    NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存

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

    cache.appcache文件如下

    # CACHE MANIFEST是必须的!
    CACHE MANIFEST
    /style.css
    /logo.png
    /app.js
    # 不缓存的文件,永远不会被缓存,且离线时是不可用的
    NETWORK:
    login.js
    # 可以使用星号来指示所有其他资源/文件都需要因特网连接:
    NETWORK:
    *
    # 注释:获取不到资源时的备选路径,就跳转到指定页面
    FALLBACK:
    index.html 404.html

    怎么更新缓存

    如同文章开始时说的那样,浏览器发现html上有manifest文件时会先去请求cache.appcache文件,再根据manifest文件的内容进行缓存。具体的流程如下

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

    而离线情况下,浏览器就直接使用本地的缓存。 有没有发现一个问题,如果我们更新代码了之后,浏览器还是使用了原来的缓存怎么办。

    最简单粗暴的方式就是手动清除浏览器的缓存,这当然很大程度在生产环境上是不会这样处理的。

    修改manifest的方式

    以 “#” 开头的是注释行,但也可满足其他用途。应用的缓存会在其 manifest 文件更改时被更新。如果您编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

    以上就是HTML5缓存机制是什么?怎么更新缓存的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:HTML5 HTML5缓存
    上一篇:HTML5有哪些新特性?HTML5新特性详解 下一篇:大神为您详解localstorge,seesionstorage
    PHP编程就业班

    相关文章推荐

    • HTML5 WebStorage(HTML5本地存储技术)_CSS/HTML• javascript html5摇一摇功能的实现_javascript技巧• javascrip+HTML5 Canvas绘制转盘抽奖_javascript技巧• javascript HTML5 canvas实现打砖块游戏_javascript技巧• JavaScript html5 canvas绘制时钟效果(二)_javascript技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网