Ja... da kann ich schwer was gegen sagen. Ich finde halt Application Cache so einfach zu handeln. Aber es bringt halt seine Probleme mit sich und:
Ich habe schon vorher mit Service-Workern gearbeitet. Aber ich krieg hier irgendwas nicht gebacken.
In meiner index-Datei habe ich folgendes Script:
Javascript:
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker
.register('/js/sw.js')
.then(function() {
console.log("Service Worker Registered");
});
}
</script>
Funktioniert alles einwandfrei. Kein Error. Ich kann den service-worker in den dev-Tools sehen.
Meine sw.js sieht folgendermaßen aus:
Javascript:
importScripts('/mobile-firebase/js/serviceworker-cache-polyfill.js');
self.addEventListener('install', function (e) {
console.log("fired");
e.waitUntil(
caches.open('NexoScanner').then(function (cache) {
return cache.addAll([
]);
}));
});
self.addEventListener('fetch', function (event) {
console.log(event.request.url);
event.respondWith(
caches.match(event.request).then(function (response) {
return response || fetch(event.request);
})
);
});
console.log("fired"); feuert er nur dann, wenn der service-Worker das erste mal installiert wird.
Aber
self.addEventListener('fetch', function (event) {});
triggert nie.
Ich kriege aber auch keine Error-Message.
Dabei sollte er doch eigentlich (zumindest wenn der Browser offline ist) die requests aus dem cache nehmen, sofern sie verfügbar sind...
Wo ist hier mein Fehler???
Die Seiten sind übrigens auch im Cache zu sehen. Sie werden halt nur nicht geladen.