-
Notifications
You must be signed in to change notification settings - Fork 27.3k
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
Prevent caching page with 304 status #57737
Conversation
@ijjk i understand that is not a super elegant solution, an alternative could be strip all client caching headers ex |
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.
Hi could we add a failing test case for this showing this resolves the issue properly?
@ijjk i added a test that match the original issue race condition. It's a little bit complicated but i can't find a more clear way to emulate the race condition. Let me known if it's ok 😄 |
Stats from current PRDefault BuildGeneral Overall increase
|
vercel/next.js canary | gffuma/next.js fix-304-cache | Change | |
---|---|---|---|
buildDuration | 10.7s | 10.6s | N/A |
buildDurationCached | 6.1s | 6s | N/A |
nodeModulesSize | 175 MB | 175 MB | |
nextStartRea..uration (ms) | 424ms | 422ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | gffuma/next.js fix-304-cache | 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 | 253 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 | gffuma/next.js fix-304-cache | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | gffuma/next.js fix-304-cache | 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 | gffuma/next.js fix-304-cache | Change | |
---|---|---|---|
_buildManifest.js gzip | 484 B | 484 B | ✓ |
Overall change | 484 B | 484 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | gffuma/next.js fix-304-cache | Change | |
---|---|---|---|
index.html gzip | 529 B | 528 B | N/A |
link.html gzip | 541 B | 543 B | N/A |
withRouter.html gzip | 525 B | 524 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | gffuma/next.js fix-304-cache | Change | |
---|---|---|---|
edge-ssr.js gzip | 96.1 kB | 96.1 kB | N/A |
page.js gzip | 140 kB | 140 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | gffuma/next.js fix-304-cache | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 627 B | 627 B | ✓ |
middleware-r..fest.js gzip | 148 B | 151 B | N/A |
middleware.js gzip | 23 kB | 23 kB | N/A |
edge-runtime..pack.js gzip | 1.92 kB | 1.92 kB | ✓ |
Overall change | 2.55 kB | 2.55 kB | ✓ |
Diff details
Diff for page.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
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.
Thanks for adding that, reworked the fix to handle more cases but should be good now as your added test is passing!
Tests Passed |
@ijjk Just thanks? You had this issue for almost 2 months now and completely ignored it not even acknowledge it exists and even issued a new 'major' along the way. Thanks @gffuma you kinda saved us! You deserve 10 beers at least for this :) |
@gffuma @mario-mestrovic @ijjk Sorry guys, I've just updated next to latest version (14.0.2) which contains this fix but it seems that the issue is still here; could you please verify if you can reproduce? |
Still broken for me as well |
I think that sometimes when a revalidation happens from a request with caching headers this causing the 304 status to be cached.
This PR ensures the 304 from an initial response doesn't affect a background revalidation.
Fixes: #56580