ホームページ >バックエンド開発 >Golang >Go Web サーバーの呼び出しカウントに奇数のみが表示されるのはなぜですか?

Go Web サーバーの呼び出しカウントに奇数のみが表示されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 04:31:10564ブラウズ

Why Does My Go Web Server's Call Count Show Only Odd Numbers?

Web サーバーの呼び出しカウントが偶数をスキップする理由

問題

この Go Web サーバーを使用して呼び出しをカウントすると、代わりに奇数が出力されます予想されるシーケンス 1、2、 3...:

 package mainimport (
  "fmt"
  "net/http"
)

var calls int

// HelloWorld print the times being called.
func HelloWorld(w http.ResponseWriter, r *http.Request){
    calls++
    fmt.Fprintf(w, "You've called me %d times", calls)
}

func main() {
  fmt.Printf("Started server at http://localhost%v.\n", 5000)
  http.HandleFunc("/", HelloWorld)
  http.ListenAndServe(":5000", nil)
}

解決策

観察された動作は、ブラウザによる favicon.ico ファイルの処理が原因です。 Web ページが読み込まれると、ブラウザは標準の Web サイト アイコンであるこのファイルを要求します。指定されたコードによって提供される Web サーバーは有効な favicon.ico を提供しないため、ブラウザーはそれを繰り返し要求します。

各要求は HelloWorld ハンドラーの呼び出しとしてカウントされるため、ユーザーが呼び出した場合でも呼び出し回数は増加します。ページを 1 回だけ更新します。 favicon.ico リクエストは、HelloWorld 関数によって処理されるルート URL (「/」) の呼び出しの間に挟まれているため、不均等な番号シーケンスが発生します。

これを防ぐには、HelloWorld 内のリクエスト パスをチェックします。この変更により、ルート URL へのリクエストに対してのみ呼び出しカウントが増加するようになります。あるいは、Web サーバー構成で favicon.ico リクエストを完全に無効にすることもできます。

以上がGo Web サーバーの呼び出しカウントに奇数のみが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。