Bonjour
Pour ma PWA
J'ai deux questions par rapport au choix de scripts javascript.
1er script : cache sinon fetch -> cache
2ème script : cache sinon fetch.
J'envisage soit les deux scripts suivants ( pour 1 et 2 ), soit deux autres scripts plus simples.
Voici les scripts et les questions :
Le script StaleWhileRevalidate.js fait-il le fetch même si le cache répond ?
Le script CacheNetworkRace.js fait-il le fetch même si le cache a répondu ?
Merci beaucoup.
Pour ma PWA
J'ai deux questions par rapport au choix de scripts javascript.
1er script : cache sinon fetch -> cache
2ème script : cache sinon fetch.
J'envisage soit les deux scripts suivants ( pour 1 et 2 ), soit deux autres scripts plus simples.
Voici les scripts et les questions :
JavaScript:
// StaleWhileRevalidate.js
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.open('mysite-dynamic').then(function(cache) {
return cache.match(event.request).then(function(response) {
var fetchPromise = fetch(event.request).then(function(networkResponse) {
cache.put(event.request, networkResponse.clone());
return networkResponse;
})
return response || fetchPromise;
})
})
);
});
Le script StaleWhileRevalidate.js fait-il le fetch même si le cache répond ?
JavaScript:
// CacheNetworkRace.js
// Promise.race is no good to us because it rejects if
// a promise rejects before fulfilling. Let's make a proper
// race function:
function promiseAny(promises) {
return new Promise((resolve, reject) => {
// make sure promises are all promises
promises = promises.map(p => Promise.resolve(p));
// resolve this promise as soon as one resolves
promises.forEach(p => p.then(resolve));
// reject if all promises reject
promises.reduce((a, b) => a.catch(() => b))
.catch(() => reject(Error("All failed")));
});
};
self.addEventListener('fetch', function(event) {
event.respondWith(
promiseAny([
caches.match(event.request),
fetch(event.request)
])
);
});
Le script CacheNetworkRace.js fait-il le fetch même si le cache a répondu ?
Merci beaucoup.