美文网首页
使用offline-plugin配置service-worker

使用offline-plugin配置service-worker

作者: 广告位招租 | 来源:发表于2019-10-31 20:48 被阅读0次

    最近有需求要求页面离线缓存,所以使用了service-worker,找了很多资料,最后选择了webpack插件offline-plugin

    参考了使用offline-plugin搭配webpack轻松实现PWA中的配置,但是还是遇到了很多问题,在这里记录一下

    1. vue-cli3的问题

    刚开始配置简单,发现状态改变时并没有触发对应的事件,于是增加了配置项

    vuecli3的webpack配置在vue.config中,具体配置如下

    这里直接将sw文件输出到根路径,并且开启了改变状态时触发对应的事件

    module.exports = {
      configureWebpack: {
        plugins: [
          new OfflinePlugin(
            {
              responseStrategy: 'cache-first', // 缓存优先
              AppCache: false, // 不启用appCache
              safeToUseOptionalCaches: true, // Removes warning for about `additional` section usage
              ServiceWorker: {
                output: './sw.js', // 输出目录
                publicPath: './sw.js', // sw.js 加载路径
                scope: '/', // 作用域
                minify: true, // 开启压缩
                events: true // 当sw状态改变时候发射对应事件
              },
              caches: 'all',
              autoUpdate: 30000
            }
          )
        ]
      }
    }
    

    更多配置内容请查阅https://github.com/NekR/offline-plugin/blob/master/docs/options.md

    2. 事件触发

    在这里希望得到的情况是,当检测到sw文件改变(代码发生更新变化)时,通过一个钩子函数来更新一下当前页面(例如: 弹出一个对话框询问发现更新的内容,提示是否立即更新)

    在main.js中注册

    当页面更新时, 将会触发如下几个钩子函数,使用OfflinePluginRuntime.applyUpdate()可以直接更新

    import * as OfflinePluginRuntime from 'offline-plugin/runtime'
    
    OfflinePluginRuntime.install({
      onUpdateReady: () => {
        console.log('SW Event:', 'onUpdateReady')
        OfflinePluginRuntime.applyUpdate()
      },
      onUpdated: () => {
        console.log('SW Event:', 'onUpdated')
        // Reload the webpage to load into the new version
        window.swUpdate = true
      }
    })
    
    

    更多options请访问

    3 more

    更多资料查阅

    https://developer.mozilla.org/zh-CN/docs/Web/API/Service_Worker_API

    https://x5.tencent.com/tbs/guide/serviceworker.html

    相关文章

      网友评论

          本文标题:使用offline-plugin配置service-worker

          本文链接:https://www.haomeiwen.com/subject/xmxxbctx.html