nextjs 16 正式版果然还只是个类似 beta 啊 要用的建议等到 16.1 或者 16.2 再碰

查看 18|回复 2
作者:bbbblue   
这几天对那个 cache component 感兴趣,就找了个之前的项目试了一下。
结果像捅了 bug 窝子一样。
[ol]

  • 首先是官网文档上一堆错误,他们的 use cache 例子给了非 async 函数可用,但是实际不可用,所以之前那种 shared component 的写法都得改(不写 use client ,但是用 hook 的方式)。ISR 等文档内容在 cacheComponent 无法使用,还没更新。

  • middleware.ts 改名成了 proxy.ts, 但是没测试 windows ,导致 build 之后,windows 下整个 proxy.ts 功能消失(换成 middleware.ts 又可用了)。 确认 16.0.1 修复

  • 用文档的 cacheComponent 取代 dynamic='force-static'后发现两者行为不一致,用那个写法的动态内容全返回了 cache-control:no-store,打 debug 日志是走了缓存。原先 force-static 会返回 s-maxage 和 swr

  • 一直改代码 build ,观察生产环境的缓存情况,结果发现跑 dev 报错... ...某些情况写"use cache",dev 就会挂掉,但是生产没问题。😂

  • 15 时候是 SSG 的 page 全变成了 PPR ,并且加 use cache 也变不回 SSG 。
    [/ol]
    如果你项目里用了 next-intl 之类 route base 的 i18n,他们可能还没兼容好。next-intl 最好拿到 locale 都设置一下 setRequestLocale,不然它会去读 cookie ,导致所有的组件都要加 Suspend 或者 use cache 。
    这是我就试了 2 天发现的...
    这特么...
    大家打算升级的缓一缓啊。。。或者不要开 cacheComponent

    nextjs, cacheComponent, bug

  • XTTX   
    哎 与其跟着一个卖 aws wrapper 的公司胡乱搞, 不如直接换 tanstack start 。react 还加了个'use no memo'.. 我也是服了这群人。
    bbbblue
    OP
      
    @XTTX 我是直接 docker 部署的 前面一个 cf 所以这个 cache-control 对我挺重要 😂
    ( emmm 不过我 cf 里那个 path 写个规则让他全部强制 cache 了 这么一想似乎也没那么重要了...
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部