diff --git a/internal/stats/http_request_stat_manager.go b/internal/stats/http_request_stat_manager.go index fefc1a7..2b51814 100644 --- a/internal/stats/http_request_stat_manager.go +++ b/internal/stats/http_request_stat_manager.go @@ -28,6 +28,7 @@ type StatItem struct { } var SharedHTTPRequestStatManager = NewHTTPRequestStatManager() +var sharedUserAgentParser = NewUserAgentParser() // HTTPRequestStatManager HTTP请求相关的统计 // 这里的统计是一个辅助统计,注意不要因为统计而影响服务工作性能 @@ -176,7 +177,6 @@ func (this *HTTPRequestStatManager) AddFirewallRuleGroupId(serverId int64, firew // Loop 单个循环 func (this *HTTPRequestStatManager) Loop() error { timeout := time.NewTimer(10 * time.Minute) // 执行的最大时间 - userAgentParser := NewUserAgentParser() Loop: for { select { @@ -222,7 +222,7 @@ Loop: serverId := userAgentString[:atIndex] userAgent := userAgentString[atIndex+1:] - var result = userAgentParser.Parse(userAgent) + var result = sharedUserAgentParser.Parse(userAgent) var osInfo = result.os if len(osInfo.Name) > 0 { dotIndex := strings.Index(osInfo.Version, ".") diff --git a/internal/stats/user_agent_parser_test.go b/internal/stats/user_agent_parser_test.go index 2807f4a..f28e7bb 100644 --- a/internal/stats/user_agent_parser_test.go +++ b/internal/stats/user_agent_parser_test.go @@ -12,8 +12,10 @@ import ( func TestUserAgentParser_Parse(t *testing.T) { var parser = NewUserAgentParser() - t.Log(parser.Parse("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Test/1")) - t.Log(parser.Parse("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")) + for i := 0; i < 4; i ++ { + t.Log(parser.Parse("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Test/1")) + t.Log(parser.Parse("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")) + } } func TestUserAgentParser_Parse_Unknown(t *testing.T) {