这是一个WebPACK插件。这主要是HTML5的缓存清单文件生成。生成HTML5的缓存清单文件,生成资产体现WebPACK插件,和 <html>
标签、 manifest
属性插入。php
$ npm i webpack-manifest --save-dev复制代码
var Manifest= require('webpack-manifest');
var pkg =require('./package');
module.exports = {
plugins:[
// 这个要放在前面就能够自动在 `<html>`标签中插入`manifest`属性
// This should be placed in the front can antomatically insert the `manifest` attribute in hte `<html>` tag
new HtmlWebpackPlugin({...}),
new Manifest({
cache: [
'js/[hash:8].sorting-index.js',
'css/[hash:8].sorting-test.css',
'css/[hash:8].index-index.css'
],
//Add time in comments.
timestamp: true,
// 生成的文件名字,选填
// The generated file name, optional.
filename:'cache.manifest',
// 注意*星号前面用空格隔开
network: [
'http://api.map.baidu.com/ *',
'http://img.jslite.com/ *'
],
// 注意中间用空格隔开
fallback: ['/ /404.html'],
// manifest 文件中添加注释
// Add notes to manifest file.
headcomment: pkg.name + " v" + pkg.version,
master: ['index/index.html']
})
]
}复制代码
生成 cache.manifest
文件css
CACHE MANIFEST
# Time: Sat Jun 04 2016 17:11:50 GMT+0800 (CST)
# webpack-multipage v1.0.0
CACHE:
js/8d4976fb.sorting-index.js
css/667ca815.sorting-test.css
css/3eaf22d0.index-index.css
NETWORK:
http://api.map.baidu.com/ *
http://img.jslite.com/ *
FALLBACK:
/ /404.html复制代码
下面的 NETWORK 小节规定文件 "login.php" 永远不会被缓存,且离线时是不可用的,html
NETWORK:
login.php
http://img.jslite.com/ *复制代码
可使用星号来指示全部其余资源/文件都须要因特网链接,或者你须要让某个地址下的全部请求不缓存这样配置http://img.jslite.com/ *
,星号前面用空格隔开。html5
NETWORK:
*复制代码
下面的 FALLBACK 小节规定若是没法创建因特网链接,则用 "404.html" 替代 /html5/ 目录中的全部文件:node
FALLBACK:
/html5/ /404.html复制代码
注释:第一个 URI 是资源,第二个是替补。webpack
指定一个HTML页面引入cache.manifest
,例如git
<html manifest="path/to/name-of.manifest">复制代码
一旦应用被缓存,它就会保持缓存直到发生下列状况:github
如何实现离线访问特性,实现的步骤很是简单,主要3个步骤: web
AddType text/cache-manifest manifestchrome
CACHE MANIFEST
# Time: Sat Jun 04 2016 17:11:50 GMT+0800 (CST)
# webpack-multipage v1.0.0
CACHE:
Path/to/cache.js复制代码
<html>
标签加 manifest
属性,并引用manifest
文件<html manifest="path/to/name-of.manifest">复制代码
manifest的mime类型,apache下能够在httpd.conf中加上
AddType text/cache-manifest manifest
AddType text/cache-manifest .appcache复制代码
在每一个页面经过 iframe
来引用这个静态文件,以达到咱们不缓存当面页面,只缓存咱们但愿缓存文件的目的。
在NETWORK
设置白名单,可是接口请求若是是https
有可能致使失败,接口报错信息Provisional headers are shown
,这个缘由是你指定白名单,而且请求是https
。
NETWORK:
https://api.jslite.com/ *复制代码
解决方法: NETWORK
白名单设置通配符*
,以下:
NETWORK:
*复制代码
能够查看和清除缓存
chrome://appcache-internals复制代码
option+command+i
选择 Network
,工具栏选择Offline
chrome://flags/#show-saved-copy
# 设置下面选项
# Enable: Primary复制代码