Continuing hunting for this caching issue that is destroying my mind body and soul or write the saturday newsletter?
do what makes you happy:)
reply
deleted by author
reply
what good movie should I watch tonight?
reply
deleted by author
reply
I think I watched this one too
reply
deleted by author
reply
watched, great movie!
reply
deleted by author
deleted by author
reply
I like this one, thanks @nemo
SN hidden feature, asking for good movies:)
reply
deleted by author
So it's not confirmed that vercel/next.js#51823 is causing this as mentioned in the ticket?
reply
I'm pretty sure that's not the issue at this point. Let's say we're running deployment id A, when we load pages, the path requested for SSR data will look like .../A/...json. All the appropriate cache headers are set, e.g. no-store, no-cache.
When we deploy deployment id B, the browser/pwa (unless its a fresh navigation or reload) continues to request .../A/...json on navigations. Even though .../A/...json doesn't actually exist, ie its a 404 if visited directly, the service worker returns an empty response with status 200 ... so effectively all the data is stale.
You can recreate locally by building production builds and manually altering the deployment id between builds.
What's weird is that the service worker doesn't appear to be serving the empty responses from its cache (at least it doesn't say that it is) ... so where are they coming from? Again, visiting the path directly results in a 404 so nextjs isn't sending the 200s.
It has to either come from the service worker or the browser's cache but neither of them should be storing it.
reply
I'm pretty sure I've ruled out the service worker returning stale responses under normal circumstances because if I manually call fetch('.../A/...json') with default options in the browser console, then the service worker reports 404.
So it maybe nextjs calling fetch with weird options that's causing the issue.
reply
Looks like it is nextjs. It's calling fetch with a X-Nextjs-Data: 1 header. If I remove the header, it 404's like it should.
reply
If you run this in the browser console while on https://stacker.news it'll return 200 for an arbitrary data request.
const headers = new Headers() headers.append('X-Nextjs-Data', '1') fetch('https://stacker.news/_next/data/this_doesnt_exist.json', { headers }).then(console.log)
reply
If I remove the middleware it works as expected and 404s.
I guess I should report this a bug to nextjs.
reply
100 sats \ 1 reply \ @ek 15 Oct 2023
All this software between us and our users almost makes me believe I want to be a hardware engineer, not a software engineer, lol
reply
tbf hardware engineers have even more software between their work and their customers lol
Software's composability is ultimately a feature and not a bug. It's why everyone makes software and a relatively small number of people make hardware ... and even hardware people rely on 3rd party components which are horrifyingly opaque and suffer from super slow release cycles.
There's an ex-hardware guy in Pleb Lab right now who has transitioned to software. The main upside afaict is how tangible his work was. I can buy the stuff he designed on Amazon and it can sit on my desk.
I totally get it though. I studied a lot of circuits and engineering in college wanting to be a sovereign full stacker to an absurd degree, but the reality is we're all dependent on something.
I see, must be related to how their client side navigation works since only during client side navigation, these /_next/data/ routes are called, I think.
reply
deleted by author
reply