第一章:go mod download很慢
在使用 Go 模块时,go mod download 命令是获取依赖包的核心操作。然而,许多开发者在国内或网络受限环境下会遇到下载速度极慢、超时甚至失败的问题。这通常源于默认的模块代理指向国外服务器(如 proxy.golang.org),导致连接延迟高或无法访问。
配置国内模块代理
Go 支持通过环境变量配置模块代理,推荐使用国内镜像服务来加速下载。例如:
# 设置 GOPROXY 使用七牛云代理
go env -w GOPROXY=https://goproxy.cn,direct
# 或使用阿里云代理
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
其中 direct 表示对私有模块或特定域名直接连接,不经过代理。
启用模块缓存与校验
Go 会自动缓存已下载的模块到本地(默认在 $GOPATH/pkg/mod)。若网络恢复但仍卡顿,可尝试清除缓存后重试:
# 清理所有模块缓存
go clean -modcache
# 重新下载依赖
go mod download
此举可解决因部分文件损坏导致的阻塞问题。
网络诊断建议
当代理设置无效时,可通过以下方式排查:
- 使用
ping和curl测试代理地址连通性; - 检查是否处于企业内网,需配置 HTTP_PROXY 环境变量;
- 确认防火墙未拦截
golang.org相关域名。
常见代理配置对比:
| 代理地址 | 提供方 | 是否支持私有模块 |
|---|---|---|
| https://goproxy.cn | 七牛云 | 是(配合 direct) |
| https://mirrors.aliyun.com/goproxy/ | 阿里云 | 是 |
| https://proxy.golang.org | 官方 | 是 |
合理配置代理并结合本地缓存管理,能显著提升 go mod download 的执行效率。
