Isu Caching Pelayan Fail HTTP
Pakej net/http dalam Go menyediakan pengendali FileServer untuk menyediakan fail statik. Walau bagaimanapun, pengguna menghadapi masalah apabila fail yang diedit baru-baru ini tidak dipaparkan, walaupun pengepala Panjang Kandungan dalam respons adalah tepat.
Punca:
Isu ini telah dikesan menggunakan folder kongsi Kotak Maya untuk mengehoskan fail statik. Apabila fail diakses melalui folder kongsi, Virtual Box melakukan caching, menyebabkan versi lapuk fail disampaikan oleh pengendali FileServer.
Contoh:
Pertimbangkan program berikut:
package main import ( "fmt" "net/http" ) func main() { http.Handle("/", http.FileServer(http.Dir("./www/"))) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) } }
Dengan fail HTML:
<code class="html"><!doctype html> <html> <body> <p>Hello there everyone</p> </body> </html></code>
Apabila mengakses halaman ini dari kotak Vagrant, kandungan tidak akan dikemas kini, walaupun selepas menyegarkan penyemak imbas atau mengubah suai fail HTML.
Penyelesaian:
Untuk menyelesaikan isu ini, adalah disyorkan untuk mengelak daripada menggunakan folder kongsi Virtual Box untuk menyediakan fail statik dengan pengendali http.FileServer . Sebaliknya, alihkan fail ke direktori tempatan pada kotak Vagrant dan layankannya dari sana.
Atas ialah kandungan terperinci Mengapa Fail Saya yang Diedit Tidak Dilayan oleh Pengendali Pelayan Fail Go dalam Kotak Maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!