我正在使用 NextJs 14 和 ISR 方法编写 NextJs 前端。我的所有页面都将重新验证时间设置为 30 秒。我使用 Amplify 来部署应用程序。我在 ISR 页面上发现了非常奇怪的缓存行为。 有时它会给我非常旧的缓存,比如 15 分钟前。
预期行为:缓存最多保留 30 秒,然后缓存重新生效。我每 30 秒查看一次最新数据(+ 重新验证时间)。
当前行为:缓存保留更长的时间(我看到了 15 分钟)。当我重新加载页面时,我可以随机(由于某种原因)看到旧缓存或新缓存。
如何解决此问题?为什么旧缓存在 Amplify 上保留这么长时间?
因此,当 30 秒过去后,您访问该页面,服务器会将页面标记为过时,但仍返回旧缓存。当它返回旧缓存时,它将开始生成新页面,为下一个请求做好准备。也许这就是为什么您需要花费超过 30 秒的时间。要解决此问题,您可以检查日志:https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regenesis#debugging-cached-data-in-local-development