Rumah > pembangunan bahagian belakang > Golang > Mengapa Kiraan Panggilan Pelayan Web Saya Hanya Menunjukkan Nombor Ganjil?

Mengapa Kiraan Panggilan Pelayan Web Saya Hanya Menunjukkan Nombor Ganjil?

Linda Hamilton
Lepaskan: 2024-12-23 04:31:10
asal
508 orang telah melayarinya

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

Mengapa Kiraan Panggilan Pelayan Web Melangkau Nombor Genap

Masalah

Apabila menggunakan pelayan web Go ini untuk mengira seruannya, ia mencetak nombor tidak sekata sebaliknya daripada urutan jangkaan 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)
}
Salin selepas log masuk

Penyelesaian

Tingkah laku yang diperhatikan adalah disebabkan oleh pengendalian pelayar terhadap fail favicon.ico. Apabila halaman web dimuatkan, penyemak imbas membuat permintaan untuk fail ini, yang merupakan ikon tapak web standard. Memandangkan pelayan web yang disediakan oleh kod yang diberikan tidak menyediakan favicon.ico yang sah, penyemak imbas berulang kali memintanya.

Memandangkan setiap permintaan dikira sebagai permohonan pengendali HelloWorld, kiraan panggilan meningkat walaupun apabila pengguna hanya memuat semula halaman sekali sahaja. Permintaan favicon.ico diapit antara seruan URL akar ("/") yang dikendalikan oleh fungsi HelloWorld, mengakibatkan urutan nombor tidak sekata.

Untuk mengelakkan ini, seseorang boleh menyemak laluan permintaan dalam HelloWorld berfungsi dan abaikan permintaan untuk favicon.ico:

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)
}
Salin selepas log masuk

Pengubahsuaian ini memastikan bahawa kiraan panggilan bertambah hanya untuk permintaan ke URL akar. Sebagai alternatif, seseorang boleh melumpuhkan permintaan favicon.ico sama sekali dalam konfigurasi pelayan web.

Atas ialah kandungan terperinci Mengapa Kiraan Panggilan Pelayan Web Saya Hanya Menunjukkan Nombor Ganjil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan