Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
play
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
AURA
play
Commits
8fbcc7e2
Commit
8fbcc7e2
authored
8 months ago
by
David Trattnig
Browse files
Options
Downloads
Patches
Plain Diff
refactor(service-worker): skip https requests and chrome extensions
parent
15d688f3
No related branches found
No related tags found
1 merge request
!4
Sveltekit mig
Pipeline
#8446
passed
8 months ago
Stage: build
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
static/service-worker.js
+111
-120
111 additions, 120 deletions
static/service-worker.js
with
111 additions
and
120 deletions
static/service-worker.js
+
111
−
120
View file @
8fbcc7e2
let
OFFLINE_URL
=
'
/offline.html
'
// Match your offline page URL
let
PRE_CACHE
=
'
pre-cache-v1
3
'
// Manually update version or generate one server-site
let
PRE_CACHE_URL
=
'
/pre-cache.json
'
// Match your pre-cache URL
let
RUNTIME_CACHE
=
'
runtime-cache
'
let
EXCLUDE_CACHE
=
[
'
/admin/
'
,
'
https://securestream.o94.at/live.mp3
'
]
let
OFFLINE_URL
=
'
/offline.html
'
;
// Match your offline page URL
let
PRE_CACHE
=
'
pre-cache-v1
5
'
;
// Manually update version or generate one server-site
let
PRE_CACHE_URL
=
'
/pre-cache.json
'
;
// Match your pre-cache URL
let
RUNTIME_CACHE
=
'
runtime-cache
'
;
let
EXCLUDE_CACHE
=
[
'
/admin/
'
,
'
https://securestream.o94.at/live.mp3
'
]
;
/** Install : Service Worker */
self
.
addEventListener
(
'
install
'
,
(
event
)
=>
{
self
.
skipWaiting
()
console
.
log
(
"
[ServiceWorker] Install with pre-cache at '
"
+
PRE_CACHE_URL
+
"
'
"
,
)
console
.
log
(
"
[ServiceWorker] Offline URL set to '
"
+
OFFLINE_URL
+
"
'
"
)
self
.
skipWaiting
();
console
.
log
(
"
[ServiceWorker] Install with pre-cache at '
"
+
PRE_CACHE_URL
+
"
'
"
);
console
.
log
(
"
[ServiceWorker] Offline URL set to '
"
+
OFFLINE_URL
+
"
'
"
);
event
.
waitUntil
(
fetch
(
PRE_CACHE_URL
)
.
then
((
response
)
=>
response
.
json
())
.
then
((
precache_files
)
=>
{
caches
.
open
(
PRE_CACHE
).
then
((
cache
)
=>
{
if
(
OFFLINE_URL
)
{
console
.
log
(
"
[ServiceWorker] Using offline URL '
"
+
OFFLINE_URL
+
"
'
"
,
)
precache_files
.
push
(
OFFLINE_URL
)
}
else
{
console
.
log
(
'
[ServiceWorker] No offline URL passed.
'
)
}
console
.
log
(
'
[ServiceWorker] Pre-caching offline files
'
,
precache_files
,
)
return
cache
.
addAll
(
precache_files
)
})
}),
)
event
.
waitUntil
(
fetch
(
PRE_CACHE_URL
)
.
then
((
response
)
=>
response
.
json
())
.
then
((
precache_files
)
=>
{
caches
.
open
(
PRE_CACHE
).
then
((
cache
)
=>
{
if
(
OFFLINE_URL
)
{
console
.
log
(
"
[ServiceWorker] Using offline URL '
"
+
OFFLINE_URL
+
"
'
"
);
precache_files
.
push
(
OFFLINE_URL
);
}
else
{
console
.
log
(
'
[ServiceWorker] No offline URL passed.
'
);
}
console
.
log
(
'
[ServiceWorker] Pre-caching offline files
'
,
precache_files
);
return
cache
.
addAll
(
precache_files
);
});
})
);
// self.skipWaiting();
})
// self.skipWaiting();
})
;
/** Activate : Service Worker */
self
.
addEventListener
(
'
activate
'
,
(
event
)
=>
{
console
.
log
(
'
[ServiceWorker] Activate
'
)
console
.
log
(
'
[ServiceWorker] Activate
'
)
;
// Invalidate any existing old caches
event
.
waitUntil
(
caches
.
keys
().
then
((
keyList
)
=>
{
return
Promise
.
all
(
keyList
.
map
((
key
)
=>
{
if
(
key
!==
PRE_CACHE
)
{
console
.
log
(
'
[ServiceWorker] Removing stale cache:
'
,
key
)
return
caches
.
delete
(
key
)
}
})
,
)
})
,
)
// Invalidate any existing old caches
event
.
waitUntil
(
caches
.
keys
().
then
((
keyList
)
=>
{
return
Promise
.
all
(
keyList
.
map
((
key
)
=>
{
if
(
key
!==
PRE_CACHE
)
{
console
.
log
(
'
[ServiceWorker] Removing stale cache:
'
,
key
)
;
return
caches
.
delete
(
key
)
;
}
})
);
})
);
// Become the controller for all the clients
self
.
clients
.
claim
()
})
// Become the controller for all the clients
self
.
clients
.
claim
()
;
})
;
/** Fetch : Service Worker */
self
.
addEventListener
(
'
fetch
'
,
(
event
)
=>
{
//console.log("[ServiceWorker] Fetch", event.request.url);
//console.log("[ServiceWorker] Fetch", event.request.url);
for
(
let
i
=
0
;
i
<
EXCLUDE_CACHE
.
length
;
i
++
)
{
if
(
event
.
request
.
url
.
indexOf
(
EXCLUDE_CACHE
[
i
])
!==
-
1
)
{
// console.log('URL excluded from cache:', event.request.url)
return
false
}
}
for
(
let
i
=
0
;
i
<
EXCLUDE_CACHE
.
length
;
i
++
)
{
if
(
event
.
request
.
url
.
indexOf
(
EXCLUDE_CACHE
[
i
])
!==
-
1
)
{
// console.log('URL excluded from cache:', event.request.url)
return
false
;
}
}
// URLs requested by the user.
// Cache Strategy: Network-first, auto-add to runtime cache, fallback to pre-cache, fallback to offline page
// URLs requested by the user.
// Cache Strategy: Network-first, auto-add to runtime cache, fallback to pre-cache, fallback to offline page
// Skip HTTP requests and chrome extensions
if
(
event
.
request
.
mode
===
'
navigate
'
)
{
event
.
respondWith
(
fetch
(
event
.
request
)
.
then
((
response
)
=>
{
return
caches
.
open
(
RUNTIME_CACHE
).
then
((
cache
)
=>
{
if
(
event
.
request
.
method
==
'
GET
'
&&
!
event
.
request
.
url
.
startsWith
(
'
http
'
)
&&
!
event
.
request
.
url
.
startsWith
(
'
chrome-extension
'
)
)
cache
.
put
(
event
.
request
,
response
.
clone
());
return
response
;
});
})
.
catch
((
error
)
=>
{
return
caches
.
match
(
event
.
request
,
{
ignoreSearch
:
true
}).
then
((
response
)
=>
{
if
(
response
)
{
console
.
log
(
'
[ServiceWorker] Found navigate request in cache
'
,
event
.
request
.
url
);
return
response
;
}
else
{
if
(
!
OFFLINE_URL
)
return
new
Response
(
'
Network error happened
'
,
{
status
:
408
,
headers
:
{
'
Content-Type
'
:
'
text/plain
'
}
});
return
caches
.
match
(
OFFLINE_URL
).
then
((
response
)
=>
{
console
.
log
(
'
[ServiceWorker] Found offline URL in cache
'
,
event
.
request
.
url
);
return
response
;
});
}
});
})
);
}
if
(
event
.
request
.
mode
===
'
navigate
'
)
{
event
.
respondWith
(
fetch
(
event
.
request
)
.
then
((
response
)
=>
{
return
caches
.
open
(
RUNTIME_CACHE
).
then
((
cache
)
=>
{
if
(
event
.
request
.
method
==
'
GET
'
)
cache
.
put
(
event
.
request
,
response
.
clone
())
return
response
})
})
.
catch
((
error
)
=>
{
return
caches
.
match
(
event
.
request
,
{
ignoreSearch
:
true
})
.
then
((
response
)
=>
{
if
(
response
)
{
console
.
log
(
'
[ServiceWorker] Found navigate request in cache
'
,
event
.
request
.
url
,
)
return
response
}
else
{
if
(
!
OFFLINE_URL
)
return
new
Response
(
'
Network error happened
'
,
{
status
:
408
,
headers
:
{
'
Content-Type
'
:
'
text/plain
'
},
})
return
caches
.
match
(
OFFLINE_URL
).
then
((
response
)
=>
{
console
.
log
(
'
[ServiceWorker] Found offline URL in cache
'
,
event
.
request
.
url
,
)
return
response
})
}
})
}),
)
}
// URLs requested by page contents or API requests
// Cache Strategy: Network-first, auto-add to runtime cache, fallback to pre-cache
else
{
event
.
respondWith
(
fetch
(
event
.
request
)
.
then
((
response
)
=>
{
return
caches
.
open
(
RUNTIME_CACHE
).
then
((
cache
)
=>
{
if
(
event
.
request
.
method
==
'
GET
'
)
cache
.
put
(
event
.
request
,
response
.
clone
())
return
response
})
})
.
catch
((
error
)
=>
{
console
.
log
(
'
[ServiceWorker] Found request in cache
'
,
event
.
request
.
url
,
)
return
caches
.
match
(
event
.
request
)
}),
)
}
})
// URLs requested by page contents or API requests
// Cache Strategy: Network-first, auto-add to runtime cache, fallback to pre-cache
// Skip HTTP requests and chrome extensions
else
{
event
.
respondWith
(
fetch
(
event
.
request
)
.
then
((
response
)
=>
{
return
caches
.
open
(
RUNTIME_CACHE
).
then
((
cache
)
=>
{
if
(
event
.
request
.
method
==
'
GET
'
&&
!
event
.
request
.
url
.
startsWith
(
'
http
'
)
&&
!
event
.
request
.
url
.
startsWith
(
'
chrome-extension
'
)
)
cache
.
put
(
event
.
request
,
response
.
clone
());
return
response
;
});
})
.
catch
((
error
)
=>
{
console
.
log
(
'
[ServiceWorker] Found request in cache
'
,
event
.
request
.
url
);
return
caches
.
match
(
event
.
request
);
})
);
}
});
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment