Utiliser l'onglet Application -> Service Workers
de Chrome pour tester le cache
npm i -D workbox-cli
npx workbox wizard
<!--index.html-->
<head>
<!--...-->
<link rel="manifest" href="manifest.json">
<!--...-->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register("/service-worker.js", {
scope: '/'
});
})
} else {
console.log('Use another cache method :(');
}
</script>
</head>
//package.json
{
//...
"scripts": {
"generate": "npx workbox generateSW",
//...
},
//...
}
//workbox-config.js
module.exports = {
"globDirectory": "./",
"importWorkboxFrom": "local",
"globIgnores": [
"node_modules/**/*",
"package*",
"workbox-config.js",
"images/**/*"
],
"runtimeCaching": [{
"urlPattern": /\\.(?:png|gif|jpg|jpeg|svg)$/,
"handler": "CacheFirst",
"options": {
"cacheName": "image-cache"
}
}],
"globPatterns": [
"**/*.{json,jpg,html,js,css}"
],
"swDest": "service-worker.js"
};
Dans ce fichier de configuration il y a plusieurs éléments importants :
globDirectory
: le dossier à partir duquel on souhaite mettre en cache les fichiersimportWorkboxFrom
: si on spécifie en local, workbox sera télécharger en localglobIgnores
: les fichiers ignorés par workboxruntimeCaching
: permet de définir un cache dynamiqueglobPatterns
: les types de fichiers qui vont être cachésswDest
: le nom du fichier généré aprèsnpx workbox generateSW
//manifest.json
{
"name": "News feed",
"short_name": "News feed",
"description": "Get all the information you doesn't know you wanted !",
"icons": [
{
"src": "images/manifest/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "images/manifest/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "/?pwa",
"display": "standalone",
"theme_color": "#111111",
"background_color": "#ffffff"
}
php -S 127.0.0.1:8080
Workbox sert à utiliser des librairies sans les télécharger.
- Lancer wizard :
$ npx workbox wizard
- Répondre aux questions :
- Configurer les dossier à ignorer pour la mise en cache dans le fichier
workbox-config.js
- run
$ npx workbox generateSW
Init : $ npm i idb
init : $ npm i -D polymer-cli
lancer un server : $ npx polymer serve
init : $ npm i lit-elemen