2016-06-29 22 views
0

Ich versuche, einen Service Worker mit sw-precache einzurichten, um Assets aus CDNJS zu cachen, die offline verwendet werden sollen. Leider scheint das nicht zu funktionieren. Hier ist, was ich bisher:CDN Service Worker

Bevor Sie einer des Scripts geladen wird in 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> 

Und hier ist die Gulp Aufgabe, die ich bin mit dem Service Arbeiter zu generieren:

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) 
}) 

Wenn ich die App starte, sehe ich Service Worker Registered in der Konsole angemeldet. Wenn ich jedoch meine WLAN-Verbindung abbringe, lädt die App die Skripte nicht. Was mache ich falsch?

Errors

Antwort

3

Sie registrieren Servicemitarbeiter an einem gewissen JS Weg /js/service_worker.js. Hier beschränkt der Gültigkeitsbereich den Service Worker so, dass er nur die angegebenen Inhalte unter diesem Pfad /js/ kontrolliert.

I suggest you to register service worker at root level ie www.example.com/ dann können Sie alle Seiten steuern, die unter dieser Domain bedient werden.

+0

Das hat den Trick! Danke für die Hilfe. – LandonSchropp