Cache emojis in service worker
This commit is contained in:
parent
2b16dd55c4
commit
63490ad2da
1 changed files with 16 additions and 0 deletions
16
src/sw.js
16
src/sw.js
|
|
@ -88,6 +88,16 @@ const showPushNotification = async (event) => {
|
||||||
const shouldCache = process.env.NODE_ENV === 'production'
|
const shouldCache = process.env.NODE_ENV === 'production'
|
||||||
const cacheKey = 'pleroma-fe'
|
const cacheKey = 'pleroma-fe'
|
||||||
const cacheFiles = self.serviceWorkerOption.assets
|
const cacheFiles = self.serviceWorkerOption.assets
|
||||||
|
const emojiCacheKey = 'pleroma-fe-emoji'
|
||||||
|
const isEmoji = req => {
|
||||||
|
console.log('req.method=', req.method)
|
||||||
|
if (req.method !== 'GET') {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
const url = new URL(req.url)
|
||||||
|
console.log('pathname=', url.pathname)
|
||||||
|
return url.pathname.startsWith('/emoji/')
|
||||||
|
}
|
||||||
|
|
||||||
self.addEventListener('install', async (event) => {
|
self.addEventListener('install', async (event) => {
|
||||||
if (shouldCache) {
|
if (shouldCache) {
|
||||||
|
|
@ -180,7 +190,13 @@ self.addEventListener('fetch', async (event) => {
|
||||||
if (r) {
|
if (r) {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(event.request)
|
const response = await fetch(event.request)
|
||||||
|
if (response.ok && isEmoji(event.request)) {
|
||||||
|
console.log(`[Service Worker] Caching emoji ${event.request.url}`)
|
||||||
|
const cache = await caches.open(emojiCacheKey)
|
||||||
|
await cache.put(event.request.clone(), response.clone())
|
||||||
|
}
|
||||||
return response
|
return response
|
||||||
})())
|
})())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue