Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce FS access for incremental cache #57902

Merged
merged 4 commits into from
Nov 1, 2023

Conversation

wyattjoh
Copy link
Member

@wyattjoh wyattjoh commented Nov 1, 2023

This passes down the route kind information to the incrememntal cache so it no longer needs to test some files existing in order to validate if the file exists or not for a route.

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team type: next labels Nov 1, 2023
@wyattjoh
Copy link
Member Author

wyattjoh commented Nov 1, 2023

Current dependencies on/for this PR:

This stack of pull requests is managed by Graphite.

@wyattjoh wyattjoh force-pushed the refactor/incremental-cache-updates branch from ca2e2cb to ed7d539 Compare November 1, 2023 19:41
@ijjk
Copy link
Member

ijjk commented Nov 1, 2023

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
buildDuration 11.7s 11.5s N/A
buildDurationCached 6.7s 7.2s ⚠️ +505ms
nodeModulesSize 175 MB 175 MB ⚠️ +15.8 kB
nextStartRea..uration (ms) 432ms 429ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
199-HASH.js gzip 30 kB 30 kB N/A
3f784ff6-HASH.js gzip 53.2 kB 53.2 kB
494.HASH.js gzip 182 B 182 B
framework-HASH.js gzip 45.5 kB 45.5 kB
main-app-HASH.js gzip 254 B 252 B N/A
main-HASH.js gzip 33.1 kB 33.1 kB N/A
webpack-HASH.js gzip 1.75 kB 1.75 kB N/A
Overall change 98.9 kB 98.9 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
_app-HASH.js gzip 205 B 205 B
_error-HASH.js gzip 182 B 181 B N/A
amp-HASH.js gzip 505 B 507 B N/A
css-HASH.js gzip 322 B 323 B N/A
dynamic-HASH.js gzip 2.59 kB 2.59 kB N/A
edge-ssr-HASH.js gzip 258 B 259 B N/A
head-HASH.js gzip 348 B 347 B N/A
hooks-HASH.js gzip 369 B 368 B N/A
image-HASH.js gzip 4.38 kB 4.38 kB N/A
index-HASH.js gzip 256 B 256 B
link-HASH.js gzip 2.67 kB 2.67 kB N/A
routerDirect..HASH.js gzip 318 B 318 B
script-HASH.js gzip 384 B 383 B N/A
withRouter-HASH.js gzip 319 B 320 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 885 B 885 B
Client Build Manifests
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
_buildManifest.js gzip 484 B 484 B
Overall change 484 B 484 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
index.html gzip 528 B 527 B N/A
link.html gzip 542 B 544 B N/A
withRouter.html gzip 525 B 522 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
edge-ssr.js gzip 96.1 kB 96.4 kB ⚠️ +238 B
page.js gzip 140 kB 140 kB ⚠️ +257 B
Overall change 236 kB 237 kB ⚠️ +495 B
Middleware size
vercel/next.js canary vercel/next.js refactor/incremental-cache-updates Change
middleware-b..fest.js gzip 624 B 626 B N/A
middleware-r..fest.js gzip 148 B 151 B N/A
middleware.js gzip 24.8 kB 24.8 kB
edge-runtime..pack.js gzip 1.92 kB 1.92 kB
Overall change 26.8 kB 26.8 kB
Diff details
Diff for page.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Commit: 7dd474b

@ijjk
Copy link
Member

ijjk commented Nov 1, 2023

Tests Passed

@wyattjoh wyattjoh marked this pull request as ready for review November 1, 2023 20:00
for (const param of FLIGHT_PARAMETERS) {
delete req.headers[param.toString().toLowerCase()]
}
stripFlightHeaders(req.headers)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also pulled this out into a helper.

isRevalidate: isSSG,
},
}
if (routeModule) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Finally I also pulled the helper methods for type detection up and exposed them.

@kodiakhq kodiakhq bot merged commit 13f0303 into canary Nov 1, 2023
98 of 104 checks passed
@kodiakhq kodiakhq bot deleted the refactor/incremental-cache-updates branch November 1, 2023 21:17
kodiakhq bot pushed a commit that referenced this pull request Nov 15, 2023
### What?
When `FetchCache` is used, cache gets were incorrectly bailing. This would result in unexpected behavior, like continuously revalidating a cache key, as described in #57978.

### Why?
#57902 introduced a refactor to the `FileSystemCache` and changed the interface of `get`, but this change was not propagated to `FetchCache`. Specifically, `fetchCache` was removed in favor of a new type `kindHint`. As a result, cache reads would always short circuit because `fetchCache` would never be defined.

### How?
This updates the interface on `FetchCache` to match what is defined on the base `CacheHandler`. I've also updated the args to both `get` and `set` to be derived from `CacheHandler` so we don't have any type inconsistencies in the future.

I will be following up with a test in the CLI repo to test against a deployed app (since minimalMode cannot be easily mocked in our test suite). Manually verified these changes against the repro in the original issue below, at the following URLs:

https://revalidate-vercel-test-iota.vercel.app/fetch-cache-test
https://revalidate-vercel-test-iota.vercel.app/revalidate-tag-test

Fixes #57978
Fixes #58306
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 16, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants