fix(pwa): don't cache api requests and cache client-side navigation routes (#2687)
This commit is contained in:
@@ -83,7 +83,39 @@ const withPWA = pwaDisabled
|
||||
disableDevLogs: true,
|
||||
runtimeCaching: [
|
||||
{
|
||||
urlPattern: /^https?.*/,
|
||||
urlPattern: ({ url, request }) => {
|
||||
const clientRoutes = ['/library', '/reader'];
|
||||
const isClientRoute = clientRoutes.some((route) => url.pathname.startsWith(route));
|
||||
return isClientRoute && request.mode === 'navigate';
|
||||
},
|
||||
handler: 'StaleWhileRevalidate',
|
||||
options: {
|
||||
cacheName: 'pages-cache',
|
||||
expiration: {
|
||||
maxAgeSeconds: 365 * 24 * 60 * 60,
|
||||
},
|
||||
cacheableResponse: {
|
||||
statuses: [0, 200],
|
||||
},
|
||||
plugins: [
|
||||
{
|
||||
cacheKeyWillBeUsed: async ({ request }) => {
|
||||
const url = new URL(request.url);
|
||||
const basePath = url.pathname.split('/')[1];
|
||||
const cacheKey = `${url.origin}/${basePath}`;
|
||||
return cacheKey;
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
urlPattern: ({ url }) => {
|
||||
if (url.pathname.startsWith('/api/')) {
|
||||
return false;
|
||||
}
|
||||
return /^https?.*/.test(url.href);
|
||||
},
|
||||
handler: 'StaleWhileRevalidate',
|
||||
options: {
|
||||
cacheName: 'offlineCache',
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"release-ios-appstore": "dotenv -e .env.ios-appstore.local -- bash scripts/release-ios-appstore.sh",
|
||||
"release-google-play": "dotenv -e .env.google-play.local -- bash scripts/release-google-play.sh",
|
||||
"config-wrangler": "sed -i \"s/\\${TRANSLATIONS_KV_ID}/$TRANSLATIONS_KV_ID/g\" wrangler.toml",
|
||||
"preview": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare preview --ip 0.0.0.0",
|
||||
"preview": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare preview --ip 0.0.0.0 --port 3001",
|
||||
"deploy": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare deploy",
|
||||
"upload": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare upload",
|
||||
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts",
|
||||
|
||||
Reference in New Issue
Block a user