Skip to content

Commit 2916c06

Browse files
committed
fix: move prerenderManifest memoization to module scope
1 parent 0494f72 commit 2916c06

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/run/handlers/cache.cts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@ import { getLogger, getRequestContext } from './request-context.cjs'
2828
import { isAnyTagStale, markTagsAsStaleAndPurgeEdgeCache, purgeEdgeCache } from './tags-handler.cjs'
2929
import { getTracer, recordWarning } from './tracer.cjs'
3030

31+
let memoizedPrerenderManifest: PrerenderManifest
32+
3133
export class NetlifyCacheHandler implements CacheHandlerForMultipleVersions {
3234
options: CacheHandlerContext
3335
revalidatedTags: string[]
3436
cacheStore: MemoizedKeyValueStoreBackedByRegionalBlobStore
35-
prerenderManifest?: Promise<PrerenderManifest>
3637
tracer = getTracer()
3738

3839
constructor(options: CacheHandlerContext) {
@@ -167,8 +168,8 @@ export class NetlifyCacheHandler implements CacheHandlerForMultipleVersions {
167168
}
168169

169170
private async getPrerenderManifest(serverDistDir: string): Promise<PrerenderManifest> {
170-
if (this.prerenderManifest) {
171-
return this.prerenderManifest
171+
if (memoizedPrerenderManifest) {
172+
return memoizedPrerenderManifest
172173
}
173174

174175
const prerenderManifestPath = join(serverDistDir, '..', 'prerender-manifest.json')
@@ -177,17 +178,13 @@ export class NetlifyCacheHandler implements CacheHandlerForMultipleVersions {
177178
// @ts-expect-error Starting in 15.4.0-canary.10 loadManifest was relocated (https://github.com/vercel/next.js/pull/78358)
178179
// eslint-disable-next-line import/no-unresolved, n/no-missing-import
179180
const { loadManifest } = await import('next/dist/server/load-manifest.external.js')
180-
this.prerenderManifest = Promise.resolve(
181-
loadManifest(prerenderManifestPath) as PrerenderManifest,
182-
)
181+
memoizedPrerenderManifest = loadManifest(prerenderManifestPath) as PrerenderManifest
183182
} catch {
184183
const { loadManifest } = await import('next/dist/server/load-manifest.js')
185-
this.prerenderManifest = Promise.resolve(
186-
loadManifest(prerenderManifestPath) as PrerenderManifest,
187-
)
184+
memoizedPrerenderManifest = loadManifest(prerenderManifestPath) as PrerenderManifest
188185
}
189186

190-
return this.prerenderManifest
187+
return memoizedPrerenderManifest
191188
}
192189

193190
private async injectEntryToPrerenderManifest(

0 commit comments

Comments
 (0)