mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
Supersedes https://github.com/vercel/next.js/pull/93475 ## Summary There's a few fixes bundled in here. We're fixing `Infinity` getting serialized to `null`, which caused cache handlers and build workers to misinterpret it as "don't cache" instead of "cache forever". We use the existing infinity sentinel for that. We're also making the checks a bit more specific from `typeof !== 'number'` to forbidding `NaN` and `-Infinity`. The checks are applied consistently for profiles, inline cache life, and arguments to `fetch` and `unstable_cache`. Now that configs are also validated, we need to make sure that we only do `revalidate > expire` validation when both values are specified. There's a regression test for that, which https://github.com/vercel/next.js/pull/93475 didn't do correctly. Also, per review below: - Now actually using returned value for `unstable_cache` - Added validation + infinity fix for `revalidateTag` profile - Added validation + infinity fix in `config.experimental.staleTimes` and `config.expireTime` - Added deep clone for `defaultConfig.cacheLife` ## Test Plan New e2e tests that fail before the fixes. --------- Co-authored-by: Zack Tanner <[email protected]>
16 lines
345 B
JavaScript
16 lines
345 B
JavaScript
/**
|
|
* @type {import('next').NextConfig}
|
|
*/
|
|
const nextConfig = {
|
|
cacheComponents: true,
|
|
cacheHandlers: {
|
|
default: require.resolve('./handler.js'),
|
|
},
|
|
cacheLife: {
|
|
// The documented way to say "never revalidate/expire".
|
|
frozen: { stale: Infinity, revalidate: Infinity, expire: Infinity },
|
|
},
|
|
}
|
|
|
|
module.exports = nextConfig
|