Skip to content

Commit 69f6ff3

Browse files
committed
Merge branch 'main' into mk/canary-demo
2 parents 25edbe9 + b676576 commit 69f6ff3

File tree

5 files changed

+84
-19
lines changed

5 files changed

+84
-19
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ module.exports = {
4545
// unsupported by Node 12, i.e. optional chaining
4646
// TODO: re-enable after dropping support for Node 12
4747
'n/no-unsupported-features/es-syntax': 'off',
48+
'@typescript-eslint/no-extra-semi': 'off',
4849
},
4950
},
5051
{

cypress/integration/default/dynamic-routes.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe('Static Routing', () => {
1717
it('renders correct page via ODB on a static route', () => {
1818
cy.request({ url: '/getStaticProps/with-revalidate/', headers: { 'x-nf-debug-logging': '1' } }).then((res) => {
1919
expect(res.status).to.eq(200)
20-
expect(res.headers).to.have.property('x-nf-render-mode', 'odb ttl=1')
20+
expect(res.headers).to.have.property('x-nf-render-mode', 'odb ttl=60')
2121
expect(res.body).to.contain('Dancing with the Stars')
2222
})
2323
})
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import Link from 'next/link'
2+
3+
const Show = () => (
4+
<div>
5+
<p>This page is ISR, but will return a 404 if the current time ends in 0-4.</p>
6+
7+
<Link href="/">
8+
<a>Go back home</a>
9+
</Link>
10+
</div>
11+
)
12+
13+
export async function getStaticProps(context) {
14+
return {
15+
props: {},
16+
notFound: new Date().getMinutes() % 10 < 5,
17+
revalidate: 60,
18+
}
19+
}
20+
21+
export default Show

packages/runtime/src/templates/getHandler.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,15 @@ const makeHandler = (conf: NextConfig, app, pageRoot, staticManifest: Array<[str
128128
const ttl = getMaxAge(cacheHeader)
129129
// Long-expiry TTL is basically no TTL, so we'll skip it
130130
if (ttl > 0 && ttl < ONE_YEAR_IN_SECONDS) {
131-
result.ttl = ttl
132-
requestMode = `odb ttl=${ttl}`
131+
// ODBs currently have a minimum TTL of 60 seconds
132+
result.ttl = Math.max(ttl, 60)
133+
}
134+
// Only cache 404s ephemerally
135+
if (ttl === ONE_YEAR_IN_SECONDS && result.statusCode === 404) {
136+
result.ttl = 60
137+
}
138+
if (result.ttl > 0) {
139+
requestMode = `odb ttl=${result.ttl}`
133140
}
134141
}
135142
multiValueHeaders['cache-control'] = ['public, max-age=0, must-revalidate']

test/__snapshots__/index.js.snap

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ exports.resolvePages = () => {
66
try {
77
require.resolve('../../../.next/package.json')
88
require.resolve('../../../.next/server/chunks/162.js')
9-
require.resolve('../../../.next/server/chunks/237.js')
109
require.resolve('../../../.next/server/chunks/274.js')
11-
require.resolve('../../../.next/server/chunks/577.js')
10+
require.resolve('../../../.next/server/chunks/5237.js')
11+
require.resolve('../../../.next/server/chunks/6577.js')
1212
require.resolve('../../../.next/server/chunks/747.js')
13-
require.resolve('../../../.next/server/chunks/753.js')
14-
require.resolve('../../../.next/server/chunks/97.js')
13+
require.resolve('../../../.next/server/chunks/8753.js')
14+
require.resolve('../../../.next/server/chunks/9097.js')
1515
require.resolve('../../../.next/server/chunks/header.js')
1616
require.resolve('../../../.next/server/webpack-api-runtime.js')
1717
require.resolve('../../../.next/server/webpack-runtime.js')
@@ -74,12 +74,12 @@ exports.resolvePages = () => {
7474
try {
7575
require.resolve('../../../.next/package.json')
7676
require.resolve('../../../.next/server/chunks/162.js')
77-
require.resolve('../../../.next/server/chunks/237.js')
7877
require.resolve('../../../.next/server/chunks/274.js')
79-
require.resolve('../../../.next/server/chunks/577.js')
78+
require.resolve('../../../.next/server/chunks/5237.js')
79+
require.resolve('../../../.next/server/chunks/6577.js')
8080
require.resolve('../../../.next/server/chunks/747.js')
81-
require.resolve('../../../.next/server/chunks/753.js')
82-
require.resolve('../../../.next/server/chunks/97.js')
81+
require.resolve('../../../.next/server/chunks/8753.js')
82+
require.resolve('../../../.next/server/chunks/9097.js')
8383
require.resolve('../../../.next/server/chunks/header.js')
8484
require.resolve('../../../.next/server/webpack-api-runtime.js')
8585
require.resolve('../../../.next/server/webpack-runtime.js')
@@ -142,12 +142,12 @@ exports.resolvePages = () => {
142142
try {
143143
require.resolve('../../../web/.next/package.json')
144144
require.resolve('../../../web/.next/server/chunks/162.js')
145-
require.resolve('../../../web/.next/server/chunks/237.js')
146145
require.resolve('../../../web/.next/server/chunks/274.js')
147-
require.resolve('../../../web/.next/server/chunks/577.js')
146+
require.resolve('../../../web/.next/server/chunks/5237.js')
147+
require.resolve('../../../web/.next/server/chunks/6577.js')
148148
require.resolve('../../../web/.next/server/chunks/747.js')
149-
require.resolve('../../../web/.next/server/chunks/753.js')
150-
require.resolve('../../../web/.next/server/chunks/97.js')
149+
require.resolve('../../../web/.next/server/chunks/8753.js')
150+
require.resolve('../../../web/.next/server/chunks/9097.js')
151151
require.resolve('../../../web/.next/server/chunks/header.js')
152152
require.resolve('../../../web/.next/server/webpack-api-runtime.js')
153153
require.resolve('../../../web/.next/server/webpack-runtime.js')
@@ -210,12 +210,12 @@ exports.resolvePages = () => {
210210
try {
211211
require.resolve('../../../web/.next/package.json')
212212
require.resolve('../../../web/.next/server/chunks/162.js')
213-
require.resolve('../../../web/.next/server/chunks/237.js')
214213
require.resolve('../../../web/.next/server/chunks/274.js')
215-
require.resolve('../../../web/.next/server/chunks/577.js')
214+
require.resolve('../../../web/.next/server/chunks/5237.js')
215+
require.resolve('../../../web/.next/server/chunks/6577.js')
216216
require.resolve('../../../web/.next/server/chunks/747.js')
217-
require.resolve('../../../web/.next/server/chunks/753.js')
218-
require.resolve('../../../web/.next/server/chunks/97.js')
217+
require.resolve('../../../web/.next/server/chunks/8753.js')
218+
require.resolve('../../../web/.next/server/chunks/9097.js')
219219
require.resolve('../../../web/.next/server/chunks/header.js')
220220
require.resolve('../../../web/.next/server/webpack-api-runtime.js')
221221
require.resolve('../../../web/.next/server/webpack-runtime.js')
@@ -633,6 +633,12 @@ Array [
633633
"status": 200,
634634
"to": "/.netlify/functions/___netlify-handler",
635635
},
636+
Object {
637+
"force": true,
638+
"from": "/_next/data/build-id/en/getStaticProps/with-revalidate-404.json",
639+
"status": 200,
640+
"to": "/.netlify/builders/___netlify-odb-handler",
641+
},
636642
Object {
637643
"force": true,
638644
"from": "/_next/data/build-id/en/getStaticProps/with-revalidate.json",
@@ -855,6 +861,12 @@ Array [
855861
"status": 200,
856862
"to": "/.netlify/functions/___netlify-handler",
857863
},
864+
Object {
865+
"force": true,
866+
"from": "/_next/data/build-id/es/getStaticProps/with-revalidate-404.json",
867+
"status": 200,
868+
"to": "/.netlify/builders/___netlify-odb-handler",
869+
},
858870
Object {
859871
"force": true,
860872
"from": "/_next/data/build-id/es/getStaticProps/with-revalidate.json",
@@ -1041,6 +1053,12 @@ Array [
10411053
"status": 200,
10421054
"to": "/.netlify/functions/___netlify-handler",
10431055
},
1056+
Object {
1057+
"force": true,
1058+
"from": "/_next/data/build-id/fr/getStaticProps/with-revalidate-404.json",
1059+
"status": 200,
1060+
"to": "/.netlify/builders/___netlify-odb-handler",
1061+
},
10441062
Object {
10451063
"force": true,
10461064
"from": "/_next/data/build-id/fr/getStaticProps/with-revalidate.json",
@@ -1334,6 +1352,12 @@ Array [
13341352
"status": 200,
13351353
"to": "/.netlify/builders/___netlify-odb-handler",
13361354
},
1355+
Object {
1356+
"force": true,
1357+
"from": "/es/getStaticProps/with-revalidate-404",
1358+
"status": 200,
1359+
"to": "/.netlify/builders/___netlify-odb-handler",
1360+
},
13371361
Object {
13381362
"force": false,
13391363
"from": "/es/getStaticProps/withFallback/:id",
@@ -1526,6 +1550,12 @@ Array [
15261550
"status": 200,
15271551
"to": "/.netlify/builders/___netlify-odb-handler",
15281552
},
1553+
Object {
1554+
"force": true,
1555+
"from": "/fr/getStaticProps/with-revalidate-404",
1556+
"status": 200,
1557+
"to": "/.netlify/builders/___netlify-odb-handler",
1558+
},
15291559
Object {
15301560
"force": false,
15311561
"from": "/fr/getStaticProps/withFallback/:id",
@@ -1670,6 +1700,12 @@ Array [
16701700
"status": 200,
16711701
"to": "/.netlify/builders/___netlify-odb-handler",
16721702
},
1703+
Object {
1704+
"force": true,
1705+
"from": "/getStaticProps/with-revalidate-404",
1706+
"status": 200,
1707+
"to": "/.netlify/builders/___netlify-odb-handler",
1708+
},
16731709
Object {
16741710
"force": false,
16751711
"from": "/getStaticProps/withFallback/:id",

0 commit comments

Comments
 (0)