diff --git a/src/runtime/internal/cache.ts b/src/runtime/internal/cache.ts index f848b82c79..c04675f2d9 100644 --- a/src/runtime/internal/cache.ts +++ b/src/runtime/internal/cache.ts @@ -145,7 +145,13 @@ export function defineCachedFunction( event.waitUntil(_resolvePromise); } - if (opts.swr && validate(entry) !== false) { + const staleTtl = (opts.staleMaxAge ?? 0) * 1000; + const staleExpired = + shouldInvalidateCache || + entry.integrity !== integrity || + (staleTtl && Date.now() - (entry.mtime || 0) > staleTtl) || + validate(entry) === false; + if (opts.swr && !staleExpired) { _resolvePromise.catch((error) => { console.error(`[cache] SWR handler error.`, error); useNitroApp().captureError(error, { event, tags: ["cache"] });