博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack插件webpack-manifest实现HTML5离线缓存
阅读量:5953 次
发布时间:2019-06-19

本文共 2746 字,大约阅读时间需要 9 分钟。

这是一个WebPACK插件。这主要是HTML5的缓存清单文件生成。生成HTML5的缓存清单文件,生成资产体现WebPACK插件,和 <html>标签、 manifest属性插入。

webpack-manifest

安装

$ npm i webpack-manifest --save-dev复制代码

开始使用

var Manifest= require('webpack-manifest');var pkg =require('./package');module.exports = {  plugins:[    // 这个要放在前面就可以自动在 ``标签中插入`manifest`属性    // This should be placed in the front can antomatically insert the `manifest` attribute in hte `` 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 文件

CACHE MANIFEST# Time: Sat Jun 04 2016 17:11:50 GMT+0800 (CST)# webpack-multipage v1.0.0CACHE:js/8d4976fb.sorting-index.jscss/667ca815.sorting-test.csscss/3eaf22d0.index-index.cssNETWORK:http://api.map.baidu.com/ * http://img.jslite.com/ * FALLBACK:/ /404.html复制代码

NETWORK

下面的 NETWORK 小节规定文件 "login.php" 永远不会被缓存,且离线时是不可用的,

NETWORK:login.phphttp://img.jslite.com/ *复制代码

可以使用星号来指示所有其他资源/文件都需要因特网连接,或者你需要让某个地址下的所有请求不缓存这样配置http://img.jslite.com/ *,星号前面用空格隔开。

NETWORK:*复制代码

FALLBACK

下面的 FALLBACK 小节规定如果无法建立因特网连接,则用 "404.html" 替代 /html5/ 目录中的所有文件:

FALLBACK:/html5/ /404.html复制代码

注释:第一个 URI 是资源,第二个是替补。

master

指定一个HTML页面引入cache.manifest,例如

复制代码
  • 只需要一个页面引入使用缓存配置
  • 没引入的页面会自动读取缓存配置

更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

  • 用户清空浏览器缓存
  • manifest 文件被修改
  • 由程序来更新应用缓存

说明

如何实现离线访问特性,实现的步骤非常简单,主要3个步骤:

  • 在服务器上添加MIME TYPE支,让服务器能够识别manifest后缀的文件

AddType text/cache-manifest manifest

  • 创建一个后缀名为.manifest的文件,把需要缓存的文件按格式写在里面,并用注释行标注版本
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文件
复制代码

Apache设置

manifest的mime类型,apache下可以在httpd.conf中加上

AddType text/cache-manifest manifestAddType text/cache-manifest .appcache复制代码

自动缓存的解决方案

在每个页面通过 iframe来引用这个静态文件,以达到我们不缓存当面页面,只缓存我们希望缓存文件的目的。

缓存导致接口请求没有发送出去

NETWORK设置白名单,但是接口请求如果是https有可能导致失败,接口报错信息Provisional headers are shown,这个原因是你指定白名单,并且请求是https

NETWORK:https://api.jslite.com/ *复制代码

解决方法: NETWORK白名单设置通配符*,如下:

NETWORK:*复制代码

Chrome相关调试测试

查看cache

可以查看和清除缓存

chrome://appcache-internals复制代码

测试

  • 打开调试工具 option+command+i 选择 Network ,工具栏选择Offline
  • 地址栏打开网址chrome://flags/#show-saved-copy
# 设置下面选项# Enable: Primary复制代码

参考资料

转载地址:http://mdoxx.baihongyu.com/

你可能感兴趣的文章
门槛低的行业看天赋,门槛高的行业看毅力
查看>>
11_HTML5_Local_Storage本地存储
查看>>
UBoot常用命令手册
查看>>
全过程项目结构总结
查看>>
cas单点注销失败Error Sending message to url endpoint
查看>>
使用SerialPort 对象实现串口拨号器通信[下]
查看>>
VC文档与视图结构学习总结
查看>>
Freemarker内置函数使用
查看>>
开启微信公众号之旅
查看>>
jstl数字转日期
查看>>
Windows下Hadoop eclipse开发平台搭建
查看>>
Http Live Streaming 实现iphone在线播放视频[转]
查看>>
【温故而知新-Javascript】使用canvas元素(第一部分)
查看>>
【求助】测试XCode v8.0的正向反向功能
查看>>
使用Python代码处理Excel
查看>>
【温故而知新-Javascript】窗口效果 (全屏显示窗口、定时关闭窗口)
查看>>
四种方法下载网络文本数据到本地内存
查看>>
pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下
查看>>
SharePoint 2013 Step by Step—— 为终端用户提供故障恢复的解决方案 Part I
查看>>
如何保护你的linux操作系统
查看>>