4

Je suis à la recherche de techniques pour créer une application Web progressive dans Aurelia avec des fonctionnalités hors connexion qui fonctionnent dans les principaux navigateurs. Les travailleurs de service sont apparemment l'option préférée pour la mise en cache des actifs, mais avec un manque de support dans Safari (et actuellement Edge). Est-il possible d'utiliser des techniciens de maintenance avec une solution de repli sur appcache s'ils ne sont pas pris en charge? Comment se comportera une application si un manifeste appcache ET un technicien de maintenance sont installés?Implémentation des techniciens de maintenance avec un repli appcache pour les navigateurs non pris en charge

Répondre

4

si un navigateur prend en charge les travailleurs de service alors la mise en cache des travailleurs de service sera utilisé à la place du manifeste AppCache. Vous pouvez inclure le manifeste appCache pour les navigateurs hérités comme Safari et les choses fonctionneront comme par le passé. De plus, pour les navigateurs modernes, ils utiliseront la mise en cache des agents de service et agiront comme si l'application appCache n'existait pas. Un peu comme la façon dont les images sensibles fonctionnent.

+0

+1 cette bibliothèque gulp suit cette philosophie: https://github.com/arcturus/gulp-sww Il crée tous les fichiers serviceworker pour mettre en cache votre site Web, mais crée également le code AppCache nécessaire pour fallback. Voici le code pour détecter l'installation de serviceworker de faire le fallback à appcache: https://github.com/arcturus/gulp-sww/blob/master/templates/unminified/install.tpl.js –

+0

Soyez avis que Même si l'application est ignorée, Chrome télécharge et met à jour l'application après les registres SW. (Cela a été un bug ouvert depuis 2014, alors ne retenez pas votre souffle.) Https://crbug.com/410665 –

+0

bon à savoir! Je sais qu'appCache est en train d'être déprécié par la plupart des navigateurs. Je pense que l'année prochaine est la cible, mais cela pourrait varier. –

2

Le contrôle que la technologie du navigateur soutient est fait easly: ​​

if(navigator.serviceWorker){ 
    initServiceWorker() 
}else if(window.applicationCache){ 
    initApplicationCache(); 
}else{ 
    console.log('no caching possible'); 
} 

chargement dynamique travailleur de service ne devrait pas être un problème car il se fait en javascript de toute façon.

dynamique de Mainfest de chargement applicationCache ne semble pas être possible, mais vous pouvez essayer un hack iframe, voir: Dynamically Trigger HTML5 Cache Manifest file?