Skip to content

Commit 2c76dc2

Browse files
committed
Fix the response stream of service worker
After service worker update (rebuild the site), the following error will occasionally appear: ``` The FetchEvent for "<url_from_CDN>" resulted in a network error response: an "opaque" response was used for a request whose type is not no-cors ``` This commit ensures that the response object has been cached before being returned.
1 parent 5e2b308 commit 2c76dc2

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

sw.js

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,39 @@ self.addEventListener('install', e => {
3636
);
3737
});
3838

39-
self.addEventListener('fetch', e => {
40-
e.respondWith(
41-
caches.match(e.request).then(r => {
42-
/* console.log(`[sw] method: ${e.request.method}, fetching: ${e.request.url}`); */
43-
return r || fetch(e.request).then(response => {
44-
const url = e.request.url;
45-
46-
if (e.request.method !== 'GET'
47-
|| !verifyDomain(url)
48-
|| isExcluded(url)) {
39+
self.addEventListener('fetch', event => {
40+
event.respondWith(
41+
caches.match(event.request)
42+
.then(response => {
43+
if (response) {
4944
return response;
5045
}
5146

52-
return caches.open(cacheName).then(cache => {
53-
/* console.log('[sw] Caching new resource: ' + e.request.url); */
54-
cache.put(e.request, response.clone());
55-
return response;
56-
});
47+
return fetch(event.request)
48+
.then(response => {
49+
const url = event.request.url;
5750

58-
});
59-
})
60-
);
51+
if (event.request.method !== 'GET' ||
52+
!verifyDomain(url) ||
53+
isExcluded(url)) {
54+
return response;
55+
}
56+
57+
/*
58+
see: <https://developers.google.com/web/fundamentals/primers/service-workers#cache_and_return_requests>
59+
*/
60+
let responseToCache = response.clone();
61+
62+
caches.open(cacheName)
63+
.then(cache => {
64+
/* console.log('[sw] Caching new resource: ' + event.request.url); */
65+
cache.put(event.request, responseToCache);
66+
});
67+
68+
return response;
69+
});
70+
})
71+
);
6172
});
6273

6374
self.addEventListener('activate', e => {

0 commit comments

Comments
 (0)