盒子
文章目录
  1. 离线存储
    1. 什么是 Cache Manifest
    2. Manifest 的特点
    3. Manifest 使用方式
      1. 1. CACHE:(必须)
      2. 2. NETWORK
      3. 3. FALLBACK
    4. 如何更新缓存
  2. 注意事项
    1. 浏览器是如何对 HTML5 的离线储存资源进行管理和加载?

离线存储

离线存储

离线存储指的是:在用户没有与网络连接时,可以正常访问站点或应用,在用户与网络连接时,更新用户机器上的缓存文件。

什么是 Cache Manifest

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

Manifest 的特点

  1. 离线浏览:用户可以在离线状态下浏览网站内容。
  2. 更快的速度: 因为数据被存储在本地,所以速度会更快.
  3. 减轻服务器的负载:浏览器只会下载在服务器上发生改变的资源。

Manifest 使用方式

  1. 创建一个和 html 同名的 manifest 文件,然后在页面头部加入 manifest 属性:
<html lang="en" manifest="index.manifest">

  1. 在 cache.manifest 文件中编写需要离线存储的资源:
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html

1. CACHE:(必须)

2. NETWORK

3. FALLBACK

在离线状态时,操作 window.applicationCache 进行离线缓存的操作。

如何更新缓存

  • 更新 manifest 件
  • 通过 JavaScript 操作
  • 清除浏览器缓存

注意事项

  • 浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。
  • 如果 manifest 文件,或者内部列举的某一个文件不能正常下载,整个更新过程都将失败,浏览器继续全部使用老的缓存。
  • 引用 manifest 的 html 必须与 manifest 文件同源,在同一个域下。
  • FALLBACK 中的资源必须和 manifest 文件同源。
  • 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
  • 站点中的其他页面即使没有设置 manifest 属性,请求的资源如果在缓存中也从缓存中访问。
  • 当 manifest 文件发生改变时,资源请求本身也会触发更新。

浏览器是如何对 HTML5 的离线储存资源进行管理和加载?

  1. 在线的情况下,浏览器发现 html 头部有 manifest 属性,它会请求 manifest 文件。

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