离线存储
离线存储指的是:在用户没有与网络连接时,可以正常访问站点或应用,在用户与网络连接时,更新用户机器上的缓存文件。
什么是 Cache Manifest
原理:基于一个新建的 「.appcache」 文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像 cookie 一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示
Manifest 的特点
- 离线浏览:用户可以在离线状态下浏览网站内容。
- 更快的速度: 因为数据被存储在本地,所以速度会更快.
- 减轻服务器的负载:浏览器只会下载在服务器上发生改变的资源。
Manifest 使用方式
- 创建一个和 html 同名的 manifest 文件,然后在页面头部加入 manifest 属性:
<html lang="en" manifest="index.manifest"> |
- 在 cache.manifest 文件中编写需要离线存储的资源:
CACHE MANIFEST |
1. CACHE:(必须)
2. NETWORK
3. FALLBACK
在离线状态时,操作 window.applicationCache 进行离线缓存的操作。
如何更新缓存
- 更新 manifest 件
- 通过 JavaScript 操作
- 清除浏览器缓存
注意事项
- 浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。
- 如果 manifest 文件,或者内部列举的某一个文件不能正常下载,整个更新过程都将失败,浏览器继续全部使用老的缓存。
- 引用 manifest 的 html 必须与 manifest 文件同源,在同一个域下。
- FALLBACK 中的资源必须和 manifest 文件同源。
- 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
- 站点中的其他页面即使没有设置 manifest 属性,请求的资源如果在缓存中也从缓存中访问。
- 当 manifest 文件发生改变时,资源请求本身也会触发更新。
浏览器是如何对 HTML5 的离线储存资源进行管理和加载?
在线的情况下,浏览器发现 html 头部有 manifest 属性,它会请求 manifest 文件。
- 如果是第一次访问页面 ,那么浏览器就会根据 manifest 文件的内容下载相应的资源并且进行离线存储。
- 如果已经访问过页面并且资源已经进行离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的 manifest 文件与旧的 manifest 文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,就会重新下载文件中的资源并进行离线存储。
思考题:在更新资源的时候,页面会更新并且闪烁吗?
离线的情况下,浏览器会直接使用离线存储的资源。