首页 > 后端开发 > Golang > 为什么我的 Simple Go Web 服务器仅显示偶数调用计数?

为什么我的 Simple Go Web 服务器仅显示偶数调用计数?

Susan Sarandon
发布: 2024-12-19 10:00:16
原创
806 人浏览过

Why Does My Simple Go Web Server Show Only Even-Numbered Call Counts?

为什么这个简单的 Web 服务器打印了偶数次?

在这个 Go 编程练习中,一个简单的 Web 服务器被设计来计数和显示它被调用的次数。然而,刷新页面后,打印的值似乎仅增加偶数(例如 1、3、5...)。

理解函数调用的顺序

每个传入的 HTTP 请求都会触发对指定处理函数(本例中为 HelloWorld)的调用。然而,在幕后,浏览器会发出额外的资源请求,包括 /favicon.ico。

由于服务器没有编程来适当响应 favicon 请求,浏览器会在每次页面刷新时继续请求它。此附加请求会将调用计数器加一。

调整计数器逻辑

为了正确计算页面刷新次数,服务器需要忽略这些附加请求。一种解决方案是仅在请求路径为根路径(“/”)时增加计数器。

func HelloWorld(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        return
    }
    count := atomic.AddInt64(&calls, 1)
    fmt.Fprintf(w, "You've called me %d times", count)
}
登录后复制

或者,服务器可以排除专门针对 favicon.ico 的请求。

func HelloWorld(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path == "/favicon.ico" {
        return
    }
    count := atomic.AddInt64(&calls, 1)
    fmt.Fprintf(w, "You've called me %d times", count)
}
登录后复制

以上是为什么我的 Simple Go Web 服务器仅显示偶数调用计数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板