支持离线Web应用开发是HTML5的一个重点。离线Web应用就是在设备不能上网的时候仍然能够运行的应用。开发离线Web应用须要几个步骤,其中一个就是离线下必须能访问必定的资源(图像 JS css等)css
HTML5引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在离线时进行访问。html
📌应用程序缓存为应用带来三个优点:web
<html manifest="test.manifest">
时,会发出一个请求,请求获取 test.manifest
文件 ,若是是第一次访问,那么浏览器就会根据 描述文件(manifest 文件)中(CACHE MANIFEST)的内容下载相应的资源而且进行离线存储。若是已经访问过而且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,而后浏览器会对比新的 manifest
文件与旧的 manifest
文件,若是文件没有发生改变,就不作任何操做,若是文件改变了,那么就会从新下载文件中的资源并进行离线存储。要想在缓存中保存数据,须要使用描述文件manifest 文件,列出要下载和缓存的资源express
manifest 文件可分为三个部分:npm
🚩 【注意】 全部的你想让浏览器缓存的资源放在public静态资源文件夹中json
npm init //生成package.json说明书文件 npm i express //安装express包 npm i --save art-template express-art-template //使用art-tmplate // 入口文件app.js var express = require("express"); var app = express(); app.use('/public/', express.static('./public/')) app.engine('html', require('express-art-template')); app.get('/', function (req, res) { res.render('index.html'); }); app.listen(3000, function () { console.log("app is running at port 3000."); });
offline.appcache描述文件浏览器
CACHE MANIFEST #v01 /public/image/01.jpg //缓存第一张图片 NETWORK: * FALLBACK: /
index.html缓存
<!DOCTYPE html> <html lang="en" manifest="../public/offline.appcache"> <head> <meta charset="UTF-8"> <title>HTML5离线存储</title> <link rel="stylesheet" href="../public/index.css"> </head> <body> <img src="../public/image/01.jpg" alt=""> <img src="../public/image/02.jpg" alt=""> </body> </html>
开启服务端后:
服务器
关闭服务端后:
cookie
改变manifest
后 再次链接服务器
CACHE MANIFEST #v01 /public/image/01.jpg /public/index.css NETWORK: * FALLBACK: /
🚩 【注】看图右边控制端的输出,由于改变了manifest文件,浏览器会对比新的 manifest 文件与旧的 manifest 文件,发现文件改变了,那么就会从新下载文件中的资源并进行离线存储
再次关闭服务端后: