2016-06-29 25 views
0

我在尝试设置服务工作者使用sw-precache来缓存CDNJS中的资产以便脱机使用。不幸的是,这似乎并不奏效。这是我到目前为止有:CDN服务工作者

之前任何脚本加载在index.html

<script type='text/javascript'> 
    if ('serviceWorker' in navigator) { 
    navigator.serviceWorker.register('/js/service_worker.js') 
     .then(function() { 
     console.log("Service Worker Registered") 
     }) 
    } 
</script> 

而且这里是我使用生成服务工作者咕嘟咕嘟任务:

const config = require('../config') 
const gulp = require('gulp') 
const swPrecache = require('sw-precache') 

gulp.task('serviceWorker', (callback) => { 

    swPrecache.write(config.build.serviceWorker, { 
    runtimeCaching: [ 
     { 
     urlPattern: /^https:\/\/cdnjs\.cloudflare\.com/, 
     handler: 'networkFirst' 
     } 
    ] 
    }, callback) 
}) 

当我运行该应用程序时,我看到Service Worker Registered已记录到控制台。但是,如果我断开我的WiFi,应用程序无法加载脚本。我究竟做错了什么?

Errors

回答

3

你在一些JS路径/js/service_worker.js注册服务工作者。此范围限制服务工作人员仅控制该路径/js/下的指定内容。

I suggest you to register service worker at root level即www.example.com/那么您可以控制在该域下提供服务的所有页面。

+0

这个伎俩!谢谢您的帮助。 – LandonSchropp