@@ -11,18 +11,17 @@ const handle = app.getRequestHandler()
11
11
const ssrCache = cacheableResponse ( {
12
12
ttl : 1000 * 60 * 60 , // 1hour
13
13
get : async ( { req, res } ) => {
14
- const data = await app . render ( req , res , req . path , {
15
- ...req . query ,
16
- ...req . params ,
14
+ const rawResEnd = res . end
15
+ const data = await new Promise ( ( resolve ) => {
16
+ res . end = ( payload ) => {
17
+ resolve ( res . statusCode === 200 && payload )
18
+ }
19
+ app . render ( req , res , req . path , {
20
+ ...req . query ,
21
+ ...req . params ,
22
+ } )
17
23
} )
18
-
19
- // Add here custom logic for when you do not want to cache the page, for
20
- // example when the page returns a 404 status code:
21
- if ( res . statusCode === 404 ) {
22
- res . end ( data )
23
- return
24
- }
25
-
24
+ res . end = rawResEnd
26
25
return { data }
27
26
} ,
28
27
send : ( { data, res } ) => res . send ( data ) ,
@@ -33,9 +32,7 @@ app.prepare().then(() => {
33
32
34
33
server . get ( '/' , ( req , res ) => ssrCache ( { req, res } ) )
35
34
36
- server . get ( '/blog/:id' , ( req , res ) => {
37
- return ssrCache ( { req, res } )
38
- } )
35
+ server . get ( '/blog/:id' , ( req , res ) => ssrCache ( { req, res } ) )
39
36
40
37
server . get ( '*' , ( req , res ) => handle ( req , res ) )
41
38
0 commit comments