You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS是否会对fetch请求的invalidatedTags执行存储垃圾回收?

Next.js Fetch缓存中失效标签(invalidatedTags)的处理与清理方法

关于失效标签的垃圾回收

Next.js 默认不会主动对标记为失效(invalidated)的缓存标签执行自动垃圾回收,这些失效的缓存对象会一直保留在磁盘的缓存目录中,除非你手动清理或者触发了缓存容量淘汰机制。

手动删除失效缓存对象的方法

  • 直接清理整个fetch缓存目录
    Next.js 的fetch缓存默认存在 .next/cache/fetch-cache 目录下,你可以直接删除这个目录来清空所有缓存(包括失效的)。在终端执行对应命令:

    • Linux/macOS:rm -rf .next/cache/fetch-cache
    • Windows:rd /s /q .next\cache\fetch-cache
      也可以把这个命令加到 package.json 的脚本里,比如:
    "scripts": {
      "clean-cache": "rm -rf .next/cache/fetch-cache",
      "dev": "npm run clean-cache && next dev"
    }
    
  • 配置缓存容量上限触发自动淘汰
    在 next.config.js 中可以设置缓存的磁盘和内存容量上限,当缓存达到设定值时,Next.js 会自动删除最久未使用的缓存条目(包含失效的对象):

    /** @type {import('next').NextConfig} */
    const nextConfig = {
      experimental: {
        cacheMemoryCapacity: 52428800, // 50MB
        cacheDiskCapacity: 2147483648 // 2GB
      }
    }
    
    module.exports = nextConfig
    
  • 运行时动态清理特定标签的缓存
    如果你需要精准清理某个标签对应的失效缓存,可以通过解析缓存目录的元数据文件来定位并删除对应缓存。缓存的元数据存在 .next/cache/fetch-cache/metadata 文件夹下,每个缓存条目会关联对应的标签。你可以写一个工具函数或API路由,读取元数据找到目标标签对应的缓存文件哈希,再删除对应的缓存文件。比如:

    import fs from 'fs/promises'
    import path from 'path'
    
    async function deleteCacheByTag(tag) {
      const metadataDir = path.join(process.cwd(), '.next/cache/fetch-cache/metadata')
      const files = await fs.readdir(metadataDir)
    
      for (const file of files) {
        const filePath = path.join(metadataDir, file)
        const content = await fs.readFile(filePath, 'utf8')
        const metadata = JSON.parse(content)
        if (metadata.tags.includes(tag)) {
          // 删除对应的缓存文件
          const cacheFile = path.join(process.cwd(), '.next/cache/fetch-cache', file)
          await fs.unlink(cacheFile)
          // 删除元数据文件
          await fs.unlink(filePath)
        }
      }
    }
    

    注意:这种方式依赖Next.js的缓存目录结构,未来版本可能有变动,使用前做好测试。

内容的提问来源于stack exchange,提问作者Wisam Jbori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:39:59