この 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 サイトの他の関連記事を参照してください。