首页  >  文章  >  web前端  >  HTML5缓存机制是什么?怎么更新缓存

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

云罗郡主
云罗郡主原创
2019-01-04 10:45:177416浏览

本篇文章给大家带来的内容是关于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