Skip to content

Instantly share code, notes, and snippets.

@ireade
Last active October 7, 2023 20:56
Show Gist options
  • Star 69 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save ireade/128adedc16bf1bd1de98397d437c339d to your computer and use it in GitHub Desktop.
Save ireade/128adedc16bf1bd1de98397d437c339d to your computer and use it in GitHub Desktop.
Handle broken images with the service worker
self.addEventListener('install', (e) => {
e.waitUntil(
caches.open("precache").then((cache) => cache.add("/broken.png"))
);
});
function isImage(fetchRequest) {
return fetchRequest.method === "GET" && fetchRequest.destination === "image";
}
self.addEventListener('fetch', (e) => {
e.respondWith(
fetch(e.request)
.then((response) => {
if (response.ok) return response;
// User is online, but response was not ok
if (isImage(e.request)) {
// Get broken image placeholder from cache
return caches.match("/broken.png");
}
})
.catch((err) => {
// User is probably offline
if (isImage(e.request)) {
// Get broken image placeholder from cache
return caches.match("/broken.png");
}
}) // end fetch
)
});
@fanjunzhi
Copy link

when first timen brower website, image error occur may happen before the 'broken.jpg' cached. sw scheme can coopera with css scheme。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment