该清:$GOCACHE(用 go clean -cache)和 $GOMODCACHE(用 go clean -modcache 或手动删特定模块);不该碰:GoLand 自身配置缓存、gopls 锁文件及 vendor/ 目录。

GoLand 里哪些缓存该清、哪些不该碰
GoLand 本身不管理 Go 模块缓存,它只调用 go 命令;所以你看到的“依赖缓存”其实是 $GOMODCACHE(默认 $GOPATH/pkg/mod),而“构建缓存”是 $GOCACHE(如 ~/Library/Caches/go-build)。这两者完全独立,清错一个会导致不同问题:go clean -modcache 不影响编译速度,go clean -cache 不影响模块下载。
清理 GoLand 构建缓存只要一条命令
GoLand 频繁保存触发 go list 和后台分析,会把大量中间文件写进 $GOCACHE。磁盘涨到几十 GB 很常见,但清理极简单:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 直接运行
go clean -cache,无需进项目目录,全局生效 - 如果还用了模糊测试,顺手加
go clean -fuzzcache - 清理后首次
go build或dlv debug会稍慢,之后立刻恢复 - 别手动
rm -rf $GOCACHE——go clean -cache会安全处理锁和临时状态,手动删可能卡住正在运行的gopls
模块缓存不能靠 GoLand 清,必须用 go 命令
GoLand 没有“清理依赖缓存”按钮,所有模块级操作都得走 go 工具链。关键点:
-
go clean -modcache是唯一官方支持的全量清理方式,它删的是$GOMODCACHE下全部 zip、解压源码和.info校验文件,但不动go.mod、go.sum和vendor/ - 执行前务必确认
GO111MODULE=on,否则命令静默失败 - 想只清某个模块?手动删更高效:
rm -rf $(go env GOMODCACHE)/github.com/gin-gonic/gin@v1.9.1,再跑go mod download github.com/gin-gonic/gin@v1.9.1 - 删完不立即
go mod verify,后续拉取的模块可能和go.sum对不上——这是最容易被忽略的校验断层
CI/CD 或多项目共用环境时的深度清理策略
全量 go clean -modcache 在 CI 中很常见,但本地开发频繁这么干反而低效。更精准的做法:
- 用
go mod graph | awk '{print $1}' | sort -u提取当前项目实际用到的所有模块名 - 对比
ls $(go env GOMODCACHE)/cache/download,删掉未出现在列表里的私有域名缓存(比如已下线的git.internal.company.com/old-project) - 公共模块(如
golang.org/x/...)可定期go mod tidy -v,它会自动删掉go.mod里没 require 的条目,缩小下次go clean -modcache的范围 - 切换 GOPROXY 后必须清缓存——旧缓存里同版本模块可能来自不同源,
checksum mismatch就是典型症状
go build 触发重下时,如果网络超时或私有仓库权限失效,错误日志里不会提示“缓存没清干净”,而是卡在 Fetching ... 或报 unknown revision——问题不在缓存,在拉取环节。

















