This repository was archived by the owner on Apr 6, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +13
-2
lines changed
packages/nuxt/src/core/runtime/nitro Expand file tree Collapse file tree 1 file changed +13
-2
lines changed Original file line number Diff line number Diff line change 1
- import { createRenderer } from 'vue-bundle-renderer/runtime'
1
+ import { createRenderer , renderResourceHeaders } from 'vue-bundle-renderer/runtime'
2
2
import type { RenderResponse } from 'nitropack'
3
3
import type { Manifest } from 'vite'
4
4
import { appendHeader , getQuery } from 'h3'
@@ -100,7 +100,10 @@ const getSPARenderer = lazyCachedFunction(async () => {
100
100
return Promise . resolve ( result )
101
101
}
102
102
103
- return { renderToString }
103
+ return {
104
+ rendererContext : renderer . rendererContext ,
105
+ renderToString
106
+ }
104
107
} )
105
108
106
109
const PAYLOAD_CACHE = ( process . env . NUXT_PAYLOAD_EXTRACTION && process . env . prerender ) ? new Map ( ) : null // TODO: Use LRU cache
@@ -150,6 +153,14 @@ export default defineRenderHandler(async (event) => {
150
153
151
154
// Render app
152
155
const renderer = ( process . env . NUXT_NO_SSR || ssrContext . noSSR ) ? await getSPARenderer ( ) : await getSSRRenderer ( )
156
+
157
+ // Render 103 Early Hints
158
+ if ( ! isRenderingPayload && ! process . env . prerender && event . res . socket ) {
159
+ const { link } = renderResourceHeaders ( { } , renderer . rendererContext )
160
+ // TODO: use https://github.com/nodejs/node/pull/44180 when we drop support for node 16
161
+ event . res . socket ! . write ( `HTTP/1.1 103 Early Hints\r\nLink: ${ link } \r\n\r\n` , 'utf-8' )
162
+ }
163
+
153
164
const _rendered = await renderer . renderToString ( ssrContext ) . catch ( ( err ) => {
154
165
if ( ! ssrError ) {
155
166
// Use explicitly thrown error in preference to subsequent rendering errors
You can’t perform that action at this time.
0 commit comments