Skip to content

Commit fb843a5

Browse files
authoredFeb 7, 2021
[examples] Fix for custom server SSR caching (#18786)
1 parent 1773b99 commit fb843a5

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed
 

‎examples/ssr-caching/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
"start": "cross-env NODE_ENV=production node server.js"
88
},
99
"dependencies": {
10-
"cacheable-response": "^1.1.0",
10+
"cacheable-response": "^2.1.6",
1111
"cross-env": "^7.0.2",
12-
"express": "^4.14.0",
12+
"express": "^4.17.1",
1313
"next": "latest",
14-
"react": "^16.7.0",
15-
"react-dom": "^16.7.0"
14+
"react": "^17.0.1",
15+
"react-dom": "^17.0.1"
1616
},
1717
"license": "MIT"
1818
}

‎examples/ssr-caching/server.js

+11-14
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,17 @@ const handle = app.getRequestHandler()
1111
const ssrCache = cacheableResponse({
1212
ttl: 1000 * 60 * 60, // 1hour
1313
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+
})
1723
})
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
2625
return { data }
2726
},
2827
send: ({ data, res }) => res.send(data),
@@ -33,9 +32,7 @@ app.prepare().then(() => {
3332

3433
server.get('/', (req, res) => ssrCache({ req, res }))
3534

36-
server.get('/blog/:id', (req, res) => {
37-
return ssrCache({ req, res })
38-
})
35+
server.get('/blog/:id', (req, res) => ssrCache({ req, res }))
3936

4037
server.get('*', (req, res) => handle(req, res))
4138

0 commit comments

Comments
 (0)
Please sign in to comment.