mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
### What? When using the file system cache with `isrMemoryCacheSize: 0`, time-based revalidation is not working, and the file is constantly updated. I have also added some debug logging to mirror that in the `fetch-cache` handler Detailed explanation in #58507 ### Why? The cached object's tags are incorrectly accessed, causing the cache to be rewritten every hit. This is catastrophic for a caching system that relies on file modification timestamps. The tags are one level up in the object from where [they are currently being accessed](https://github.com/vercel/next.js/blob/9ab8828f72e96f5de86a7c50b67a1c5abe6e146c/packages/next/src/server/lib/incremental-cache/file-system-cache.ts#L178). Below shows a cached fetch representation on disk. When written, the tags reside at `obj.tags` instead of `obj.data.tags` ```json { "kind": "FETCH", "data": { "headers": { "connection": "keep-alive", "content-encoding": "br", "content-type": "application/json; charset=utf-8", "date": "Wed, 15 Nov 2023 21:17:42 GMT", "server": "nginx/1.18.0 (Ubuntu)", "transfer-encoding": "chunked", "vary": "Accept-Encoding" }, "body": "[SNIP]", "status": 200, "url": "https://timeapi.io/api/Time/current/zone?timeZone=UTC" # this is where the current code is trying to pull the tags # "tags": [ "time-with-fetch" ] }, "revalidate": 20, # tags actually live here "tags": [ "time-with-fetch" ] } ``` Fixes #58507