Go模块缓存是Go工具链自动维护的本地目录,用于存储已下载模块以加速构建、避免重复下载并支持离线开发;默认路径为$HOME/go/pkg/mod(Linux/macOS)或%USERPROFILE%\go\pkg\mod(Windows),通过硬链接或复制复用缓存文件。
Go 模块缓存(Module Cache)是 Go 工具链自动维护的一个本地目录,用于存储已下载的模块版本。合理利用它,能显著加快构建速度、避免重复下载、提升 CI/CD 效率,并支持离线开发。
Go 在首次 go build、go run 或 go mod download 时,会将依赖模块(含源码、校验和、元信息)下载并解压到本地缓存中,默认路径为:
$HOME/go/pkg/mod
%USERPROFILE%\go\pkg\mod
后续构建只要模块版本未变(如 go.mod 中仍是 github.com/sirupsen/logrus v1.9.3),Go 就直接从缓存硬链接或复制文件,跳过网络请求和解压步骤。
$GOPATH/pkg/mod:除非调试缓存异常,否则删除会导致下次构建重新下载全部依赖go.sum 完整且未篡改:Go 使用校验和验证缓存模块完整性,缺失或不匹配会触发重下载actions/cache 缓存 ~/go/pkg/mod;GitLab CI 可配置 cache:key:files:go.sum
go.mod 中的伪版本(如 v0.0.0-20250101000000-abcdef123456):每次哈希不同都会视为新模块,占用额外缓存空间使用内置命令快速管理:
go mod graph | head -20 查看当前模块依赖关系(辅助判断是否命中缓存)go list -m -f '{{.Dir}}' all 列出所有已加载模块的缓存路径go clean -modcache 彻底清空缓存(慎用,适合解决校验失败或磁盘占满)go mod download -x 加 -x 参数显示详细下载/缓存过程,确认是否跳过网络请求对于企业环境或网络受限场景:
export GOPROXY=https://proxy.golang.org,direct,优先走公共代理,再 fallback 到 direct(启用缓存)
GOINSECURE=example.com 绕过 HTTPS 和 sum 验证(生产禁用)