fix(pwa): configure sw and web manifest cache control headers (#1724)

This commit is contained in:
Joaquín Sánchez 2023-02-12 12:08:50 +01:00 committed by GitHub
parent c2ffdcf78b
commit b9c2bc5c70
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 0 deletions

View file

@ -79,6 +79,7 @@ export default defineNuxtModule<VitePWANuxtOptions>({
if (entry) { if (entry) {
res.statusCode = 200 res.statusCode = 200
res.setHeader('Content-Type', 'application/manifest+json') res.setHeader('Content-Type', 'application/manifest+json')
res.setHeader('Cache-Control', 'public, max-age=0, must-revalidate')
res.write(JSON.stringify(entry), 'utf-8') res.write(JSON.stringify(entry), 'utf-8')
res.end() res.end()
} }
@ -135,15 +136,22 @@ export default defineNuxtModule<VitePWANuxtOptions>({
else { else {
nuxt.hook('nitro:config', async (nitroConfig) => { nuxt.hook('nitro:config', async (nitroConfig) => {
nitroConfig.routeRules = nitroConfig.routeRules || {} nitroConfig.routeRules = nitroConfig.routeRules || {}
nitroConfig.routeRules!['/sw.js'] = {
headers: {
'Cache-Control': 'public, max-age=0, must-revalidate',
},
}
for (const locale of pwaLocales) { for (const locale of pwaLocales) {
nitroConfig.routeRules![`/manifest-${locale.code}.webmanifest`] = { nitroConfig.routeRules![`/manifest-${locale.code}.webmanifest`] = {
headers: { headers: {
'Content-Type': 'application/manifest+json', 'Content-Type': 'application/manifest+json',
'Cache-Control': 'public, max-age=0, must-revalidate',
}, },
} }
nitroConfig.routeRules![`/manifest-${locale.code}-dark.webmanifest`] = { nitroConfig.routeRules![`/manifest-${locale.code}-dark.webmanifest`] = {
headers: { headers: {
'Content-Type': 'application/manifest+json', 'Content-Type': 'application/manifest+json',
'Cache-Control': 'public, max-age=0, must-revalidate',
}, },
} }
} }

View file

@ -122,6 +122,7 @@ export default defineNuxtConfig({
'/manifest.webmanifest': { '/manifest.webmanifest': {
headers: { headers: {
'Content-Type': 'application/manifest+json', 'Content-Type': 'application/manifest+json',
'Cache-Control': 'public, max-age=0, must-revalidate',
}, },
}, },
}, },