Go模块缓存是Go工具链内置的本地存储机制,自动保存已下载模块版本以加速构建、降低网络依赖;默认位于$GOPATH/pkg/mod,含cache/、cache/download/和可选sumdb/;支持离线构建、CI/CD加速及缓存清理调试。
Go 模块缓存(Module Cache)是 Go 工具链内置的本地存储机制,它自动保存已下载的模块版本,避免重复拉取、加速构建,并显著降低对外部网络(如 proxy.golang.org 或 GitHub)的依赖。合理利用它,能让 go build、go test 和 go mod download 更快更稳定。
Go 默认将模块缓存在 $GOPATH/pkg/mod 目录下(Go 1.13+ 默认启用 module mode,无需 GOPATH)。该目录包含:
module@version 命名).info、.mod、.zip)GOSUMDB
你可以用 go env GOCACHE 和 go env GOPATH 查看实际路径。缓存内容是只读的,Go 工具会安全复用,不会修改已缓存模块。
在有网络的环境预先完成依赖准备,即可在无网或受限网络下正常构建:
go mod download 下载 go.mod 中所有直接和间接依赖到本地缓存go mod verify 确保缓存模块未被篡改go.sum 文件——它记录了每个模块的哈希值,是离线校验的关键GOFLAGS="-mod=readonly",强制 Go 只读缓存、拒绝联网获取新版本在持续集成中,可通过以下方式提升稳定性与速度:
$GOPATH/pkg/mod 目录(例如 GitHub Actions 的 actions/cache)GOPROXY=https://your-proxy.com,统一出口、提速并审计依赖GOSUMDB=off,避免因 sumdb 不可达导致失败go list -m all 预检依赖树,结合 --mod=vendor 进行 vendor 打包(适合强隔离场景)缓存异常(如版本错乱、校验失败)时,可针对性处理:
go list -m -u all 显示哪些模块来自缓存,哪些需更新go clean -modcache(慎用,会清空全部缓存)rm -rf $GOPATH/pkg/mod/cache/download/github.com/example/lib/@v/v1.2.3.zip*
GODEBUG=httptrace=1 或 GOPROXY=direct 绕过
代理排查网络问题