mirror of
https://github.com/nuxt/nuxt.git
synced 2025-03-09 03:03:18 +00:00
fix(nuxt): use prerender cache for islands (#19822)
This commit is contained in:
parent
9d8c230132
commit
e6c1bb57d7
@ -159,6 +159,7 @@ async function getIslandContext (event: H3Event): Promise<NuxtIslandContext> {
|
||||
}
|
||||
|
||||
const PAYLOAD_CACHE = (process.env.NUXT_PAYLOAD_EXTRACTION && process.env.prerender) ? new Map() : null // TODO: Use LRU cache
|
||||
const ISLAND_CACHE = (process.env.NUXT_COMPONENT_ISLANDS && process.env.prerender) ? new Map() : null // TODO: Use LRU cache
|
||||
const PAYLOAD_URL_RE = /\/_payload(\.[a-zA-Z0-9]+)?.js(\?.*)?$/
|
||||
const ROOT_NODE_REGEX = new RegExp(`^<${appRootTag} id="${appRootId}">([\\s\\S]*)</${appRootTag}>$`)
|
||||
|
||||
@ -185,6 +186,10 @@ export default defineRenderHandler(async (event) => {
|
||||
? await getIslandContext(event)
|
||||
: undefined
|
||||
|
||||
if (process.env.prerender && islandContext && ISLAND_CACHE!.has(event.node.req.url)) {
|
||||
return ISLAND_CACHE!.get(event.node.req.url)
|
||||
}
|
||||
|
||||
// Request url
|
||||
let url = ssrError?.url as string || islandContext?.url || event.node.req.url!
|
||||
|
||||
@ -334,6 +339,9 @@ export default defineRenderHandler(async (event) => {
|
||||
'x-powered-by': 'Nuxt'
|
||||
}
|
||||
}
|
||||
if (process.env.prerender) {
|
||||
ISLAND_CACHE!.set(`/__nuxt_island/${islandContext!.name}:${islandContext!.id}`, response)
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user