webpack offline-plugin 使用

原创
2016/10/14 15:06
阅读数 4.1K

offline-plugin 可以把我们的多页面应用进行缓存,即使这些html文件时独立的。

npm install offline --save-dev

在webpack打包的webpck.config.js中使用offline-plugin

const OfflinePlugin = require('offline-plugin');

module.exports = {
    ...
    output:{
        filename : ...
        path: ...
        publicPath: 'http://localhost:8080/'
    }
    plugins:[{
        new OfflinePlugin({caches : 'all'})
    }]
}

官方说一般情况下将offline-plugin作为最后一个. 需要指定publicPath 绝对路径。

在程序中安装runtime

  const runtime = require('offline-plugin/runtime')
  runtime.install();
  runtime.applyUpdate();

之后打包出来的应用即使有多个页面,也只需请求一次 , 由ServiceWorker进行缓存, 每次我们在浏览器中进入这个网站时,浏览器都会检查有没有对应的ServiceWorker文件,如果有则将加载并启动ServiceWorker。

如果我们不进行 applyUpdate 那么本地缓存的资源将永远得不到更新直到清除浏览器缓存,显然是我们所不希望的。

假设我们用nginx服务,首先开启nginx,打开我们的页面,即使里面包含多个独立的html,打开完毕后关闭nginx,这时候我们点击网页剩余部分仍然可以请求,也就是仍然可用的假象。 这时候我们关闭这个页面而不退出浏览器,新建个tab再次请求这个页面,发现仍然可以请求。也就是我们的整个应用都被浏览器给缓存了。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
2 收藏
0
分享
返回顶部
顶部