在 CentOS 上编译 Golang 项目时,编译速度往往是个让人挠头的问题——尤其是项目依赖一多,每次都要重新下载、重新编译,时间就这么白白耗掉了。其实,利用好缓存机制,能让编译过程快上一大截。下面几个方法,都是实践中比较管用的。

-
用好
go build -i参数
这个选项不只是编译,还会把编译后的二进制文件和它的依赖项一并安装到本地缓存中。下次再编译同一个项目时,Go 编译器会优先从缓存里拿依赖,省去重复编译的时间。用法非常简单:go build -i your_project.go值得一提的是,这个参数在 Go 1.10 之前比较常用,现在虽然有了更完善的模块缓存机制,但在一些老项目或特定场景下依然很实用。
-
拥抱
go mod模块管理
从 Go 1.11 开始,模块支持(go modules)就成为了官方推荐的依赖管理方式。它最大的好处之一,就是自动缓存下载的依赖包。初始化一个模块后,执行go mod tidy会自动拉取并缓存所有需要的依赖,后续编译时直接复用。操作也很直观:go mod init your_project go mod tidy可以说,现在绝大多数 Go 项目都依赖这个机制来保证编译效率和依赖一致性。
-
配置
GOPROXY加速依赖下载
Go 1.13 起引入的GOPROXY环境变量,堪称“神器”。通过指定一个袋里服务器,编译器在下载依赖时先走袋里,袋里会缓存常用的模块版本 —— 多人协作或者反复构建同一个项目时,下载速度会明显提升。官方袋里地址是:export GOPROXY=https://proxy.golang.org,direct其中
direct作为回退选项,保证袋里不可用时直接从源站获取。实际开发中,很多人会换用国内的袋里(如七牛云或阿里云),速度更加可观。
这三个方法结合起来使用,基本能覆盖绝大多数编译加速场景。缓存用好了,每次 go build 的等待时间就能从“冲杯咖啡”缩短到“喝口水的功夫”,效率提升是实实在在的。