-
Notifications
You must be signed in to change notification settings - Fork 26.1k
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
default fetchCache to no-store when force-dynamic is set #64145
default fetchCache to no-store when force-dynamic is set #64145
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
buildDuration | 17.1s | 17.1s | N/A |
buildDurationCached | 10.6s | 8s | N/A |
nodeModulesSize | 199 MB | 199 MB | |
nextStartRea..uration (ms) | 457ms | 465ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
2453-HASH.js gzip | 31.4 kB | 31.4 kB | N/A |
3304.HASH.js gzip | 181 B | 181 B | ✓ |
3f784ff6-HASH.js gzip | 53.7 kB | 53.7 kB | ✓ |
8299-HASH.js gzip | 5.1 kB | 5.1 kB | N/A |
framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
main-app-HASH.js gzip | 242 B | 242 B | ✓ |
main-HASH.js gzip | 32.2 kB | 32.2 kB | N/A |
webpack-HASH.js gzip | 1.68 kB | 1.68 kB | N/A |
Overall change | 99.3 kB | 99.3 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
_app-HASH.js gzip | 196 B | 197 B | N/A |
_error-HASH.js gzip | 184 B | 184 B | ✓ |
amp-HASH.js gzip | 505 B | 505 B | ✓ |
css-HASH.js gzip | 324 B | 325 B | N/A |
dynamic-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
edge-ssr-HASH.js gzip | 258 B | 258 B | ✓ |
head-HASH.js gzip | 352 B | 352 B | ✓ |
hooks-HASH.js gzip | 370 B | 371 B | N/A |
image-HASH.js gzip | 4.27 kB | 4.27 kB | ✓ |
index-HASH.js gzip | 259 B | 259 B | ✓ |
link-HASH.js gzip | 2.67 kB | 2.67 kB | N/A |
routerDirect..HASH.js gzip | 314 B | 312 B | N/A |
script-HASH.js gzip | 386 B | 386 B | ✓ |
withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 6.63 kB | 6.63 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
_buildManifest.js gzip | 483 B | 485 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
index.html gzip | 529 B | 527 B | N/A |
link.html gzip | 541 B | 540 B | N/A |
withRouter.html gzip | 524 B | 522 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
edge-ssr.js gzip | 95.6 kB | 95.6 kB | N/A |
page.js gzip | 3.06 kB | 3.06 kB | ✓ |
Overall change | 3.06 kB | 3.06 kB | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 622 B | 626 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 25.5 kB | 25.5 kB | N/A |
edge-runtime..pack.js gzip | 839 B | 839 B | ✓ |
Overall change | 839 B | 839 B | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 171 kB | 171 kB | ✓ |
app-page-exp..prod.js gzip | 97.5 kB | 97.5 kB | ✓ |
app-page-tur..prod.js gzip | 99.2 kB | 99.2 kB | ✓ |
app-page-tur..prod.js gzip | 93.5 kB | 93.5 kB | ✓ |
app-page.run...dev.js gzip | 145 kB | 145 kB | ✓ |
app-page.run..prod.js gzip | 92 kB | 92 kB | ✓ |
app-route-ex...dev.js gzip | 21.4 kB | 21.5 kB | N/A |
app-route-ex..prod.js gzip | 15.2 kB | 15.2 kB | N/A |
app-route-tu..prod.js gzip | 15.2 kB | 15.2 kB | N/A |
app-route-tu..prod.js gzip | 14.9 kB | 14.9 kB | N/A |
app-route.ru...dev.js gzip | 21.1 kB | 21.1 kB | N/A |
app-route.ru..prod.js gzip | 14.9 kB | 14.9 kB | N/A |
pages-api-tu..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
pages-api.ru...dev.js gzip | 9.82 kB | 9.82 kB | ✓ |
pages-api.ru..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
pages-turbo...prod.js gzip | 22.5 kB | 22.5 kB | ✓ |
pages.runtim...dev.js gzip | 23.1 kB | 23.1 kB | ✓ |
pages.runtim..prod.js gzip | 22.5 kB | 22.5 kB | ✓ |
server.runti..prod.js gzip | 51.3 kB | 51.3 kB | ✓ |
Overall change | 846 kB | 846 kB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js 04-06-default_fetchCache_to_force-no-store_when_force-dynamic_is_set | Change | |
---|---|---|---|
0.pack gzip | 1.59 MB | 1.58 MB | N/A |
index.pack gzip | 106 kB | 106 kB | |
Overall change | 106 kB | 106 kB |
Diff details
Diff for middleware.js
Diff too large to display
Diff for app-route-ex..ntime.dev.js
Diff too large to display
Diff for app-route-ex..time.prod.js
Diff too large to display
Diff for app-route-tu..time.prod.js
Diff too large to display
Diff for app-route-tu..time.prod.js
Diff too large to display
Diff for app-route.runtime.dev.js
Diff too large to display
Diff for app-route.ru..time.prod.js
Diff too large to display
4309ac9
to
1dccaa4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sense to me but holding as discussed
…_when_force-dynamic_is_set
…_when_force-dynamic_is_set
fetchCache
is a more fine-grained segment level cache-control configuration that most people shouldn't have to use. Current semantics ofdynamic = "force-dynamic"
will still treat the fetch as cacheable unless explicitly overriding it in the fetch, or setting a segment levelfetchCache
.The
dynamic
cache configuration should be seen as a "top-level" configuration, while more fine-grained controls should inherit logical defaults from the top-level. Otherwise this forces people to opt-into thefetchCache
configuration, or manually override eachfetch
call, which isn't what you'd expect when forcing a segment to be dynamic.This will default to not attempting to cache the fetch when
force-dynamic
is used. As a result, I had to update one of theapp-static
tests to userevalidate: 0
rather thanforce-dynamic
, as the revalidate behavior is slightly different in that it won't modify the revalidation time on a fetch if it's non-zero.Closes NEXT-2067