Gin 启动之后, 路由后面的 Handlers 数量是什么意思

2020-09-22 16:41:58 +08:00
 richzhu

Handler 一直都是 4

大佬们好,用 Gin 以来一直有个问题,每次等到项目启动之后,每一条路由后面都有一个 (数量 Handlers )的显示,并且数量是 4, 如下图:

Handler 变成 1

问题发生于昨天,没想到这个项目越来越大,导致路由太多,就参照网上一个人的文章,把路由拆分了。 没想到,拆分后,所有的 Handlers 都变成了 1,如下图:

想问一下各位大佬,这样的话,会不会对我的项目性能产生影响~~~

顺便奉劝大家,不要随便相信网上的文章 T_T

拆分方式

拆分路由器的方式,如下图:

1415 次点击
所在节点    Go 编程语言
4 条回复
labulaka521
2020-09-23 10:04:22 +08:00
应该是你的中间件数量+你的业务处理函数(1)
也就是 RouterGroup 这个结构体的 Handlers 参数
可以看看 gin 所使用的 httprouter
richzhu
2020-09-23 11:36:35 +08:00
@labulaka521 中间件一直都只有 1 个呢,拆分之前是 4,拆分后就变成 1 了,请问这个从 4 变成了 1,对性能有影响嘛?
Abirdcfly
2020-09-24 09:35:04 +08:00
显示这个部分在 debugPrintRoute 函数
````
func debugPrintRoute( httpMethod, absolutePath string, handlers HandlersChain) {
if IsDebugging() {
nuHandlers := len(handlers)
for _, h := range handlers{ //
debugPrint(" %s", nameOfFunction(h)) //这两行是我加的。看一下是啥就知道这 4 个是什么 handler 了。
}
handlerName := nameOfFunction(handlers.Last())
if DebugPrintRouteFunc == nil {
debugPrint("%-6s %-25s --> %s (%d handlers)\n", httpMethod, absolutePath, handlerName, nuHandlers)
} else {
DebugPrintRouteFunc( httpMethod, absolutePath, handlerName, nuHandlers)
}
}
}
````

我这里除去那个业务逻辑函数外,剩下的 3 个 handler 是
github.com/gin-gonic/gin.LoggerWithConfig.func1
github.com/gin-gonic/gin.RecoveryWithWriter.func1
github.com/gin-contrib/cors.New.func1
richzhu
2020-09-24 10:25:01 +08:00
@Abirdcfly 真大佬!疑惑解决了~ 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709473

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX