Heim > Backend-Entwicklung > Golang > Warum zeigt mein Simple Go-Webserver nur die Anzahl der geraden Anrufe an?

Warum zeigt mein Simple Go-Webserver nur die Anzahl der geraden Anrufe an?

Susan Sarandon
Freigeben: 2024-12-19 10:00:16
Original
818 Leute haben es durchsucht

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

Warum werden bei diesem einfachen Webserver gerade Zeiten gedruckt?

In dieser Go-Programmierübung soll ein einfacher Webserver zählen und anzeigen wie oft es aufgerufen wurde. Beim Aktualisieren der Seite scheinen sich die gedruckten Werte jedoch nur um gerade Zahlen zu erhöhen (z. B. 1, 3, 5...).

Die Reihenfolge von Funktionsaufrufen verstehen

Jede eingehende HTTP-Anfrage löst einen Aufruf der angegebenen Handler-Funktion (in diesem Fall HelloWorld) aus. Unter der Haube stellt der Browser jedoch zusätzliche Anfragen nach Ressourcen, einschließlich /favicon.ico.

Da der Server nicht so programmiert ist, dass er angemessen auf die Favicon-Anfrage reagiert, fordert der Browser sie weiterhin bei jeder Seitenaktualisierung an . Diese zusätzliche Anfrage erhöht den Anrufzähler um eins.

Anpassen der Zählerlogik

Um die Anzahl der Seitenaktualisierungen korrekt zu zählen, muss der Server diese zusätzlichen Anfragen ignorieren. Eine Lösung besteht darin, den Zähler nur zu erhöhen, wenn der Anforderungspfad der Stammpfad („/“) ist.

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)
}
Nach dem Login kopieren

Alternativ kann der Server Anforderungen speziell für favicon.ico ausschließen.

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)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum zeigt mein Simple Go-Webserver nur die Anzahl der geraden Anrufe an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage