DEV Community

Discussion on: Cache Busting a React App

Collapse
 
flexdinesh profile image
Dinesh Pandiyan • Edited

James — That's very true. Browsers sometime decide to ignore window.location.reload(true).

But caches.delete() will always delete the cache. So reloading synchronously after cache.delete() should clear the cache for the user.

Collapse
 
mattacus profile image
Matt

You mention reloading synchronously... I was having issues with infinite looping when our app updated and it seems due to window.location.reload firing before our caches had time to clear, in the code you shared for CacheBuster. Simply adding aPromise.all() on the caches.delete() promises solved the issue in our case.

Thank you for taking the time to share this!

Thread Thread
 
assassin profile image
a-ssassi-n • Edited

Hi Matt,

We are facing the same issue, can you please let me know the exact code you have used to solve this issue?

Something like this? Please correct me if I am wrong.

caches.keys().then(async function(names) {
await Promise.all(names.map(name => caches.delete(name)));
});

Thread Thread
 
mattacus profile image
Matt

Yep, I used promises but that's pretty much exactly what I did, then do the window.location.reload after your await

Thread Thread
 
assassin profile image
a-ssassi-n

Thanks, I got it now.

Thread Thread
 
laura6739 profile image
Laura6739 • Edited

Hi a-ssassi-n,
I'm having the same issue and I tried to do it the same way as this:
refreshCacheAndReload: () => {
if (caches) {
caches.keys().then(async function(names) {
await Promise.all(names.map(name => caches.delete(name)))
})
}
window.location.reload(true)
},
And it keeps happening did I miss something?, can you please give me any guide?

Thread Thread
 
louvki profile image
Lukas Vis
if (caches) {
  const names = await caches.keys();
  await Promise.all(names.map(name => caches.delete(name)));
}
window.location.reload();