go swagger慢
2026/6/1 5:38:07 网站建设 项目流程

几个可能导致 swagger 生成很慢的原因:

主要原因分析

1.--parseDependency选项导致全依赖解析

当前swag init命令使用了--parseDependency参数:

bash

swag init --parseDependency --instanceName swagger -g .\main.go -d .\

这个选项会递归解析所有依赖包的注释,包括:

  • 项目内部依赖(如beapi
  • 外部第三方库(如gingorm等)
  • 所有间接依赖(共 260+ 个包)

这会导致大量不必要的文件扫描,严重影响性能。

2.docs.go 文件过大

从读取的文件内容看,docs.go被截断(超过 40KB),说明项目包含大量 API 端点,解析和生成时间自然会很长。

3.解析范围过宽

当前-d .\参数表示解析当前目录下所有文件,但项目结构复杂:

plainText

beweb/ ├── webctl/ # 多个控制器 ├── setupweb/ # 配置 ├── docs/ # swagger 文档 └── ...

4.swag 版本较旧

项目使用的是github.com/swaggo/swag v1.16.4,较新版本可能有性能优化。


优化方案

方案一:移除--parseDependency(推荐)

修改swagini.bat

batch

rem 移除 --parseDependency 选项 swag init --instanceName swagger -g .\main.go -d .\

效果:只解析当前项目的注释,跳过所有依赖包,性能提升显著。

方案二:限制解析目录

batch

swag init --instanceName swagger -g .\main.go -d .\webctl,.\setupweb

效果:只解析必要的目录,减少扫描范围。

方案三:参考 beopc 项目的优化配置

beopc 项目已经做了优化:

batch

swag init --parseDependency -g .\main.go --exclude "webplat,webbiz,controller"

方案四:升级 swag 版本

bash

go get github.com/swaggo/swag@latest

建议的最终优化

修改E:\soft\gotrain\beweb\swagini.bat

batch

@echo off rem 优化后的 swagger 生成命令 rem 1. 移除 --parseDependency 避免解析外部依赖 rem 2. 明确指定需要解析的目录 swag init --instanceName swagger -g .\main.go -d .\webctl,.\setupweb cd ..

优化效果预估

优化项预期效果
移除--parseDependency性能提升 80%+,避免解析数百个依赖包
限制解析目录减少 30-50% 的扫描文件数
升级 swag额外 10-20% 性能提升

如果需要保留依赖解析功能(例如某些响应类型定义在依赖包中),可以使用--parseInternal替代--parseDependency,只解析内部包而不解析外部第三方库。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询