Isu Caching dengan http.FileServer
Artikel ini menangani cabaran khusus yang dihadapi semasa menggunakan fungsi http.FileServer dalam aplikasi Go. Isu ini timbul apabila fungsi menyimpan kandungan fail dan terus menyediakan versi lama walaupun selepas fail telah diedit.
Dalam contoh mudah, program Go menyediakan fail HTML statik daripada direktori ./www/:
<code class="go">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) } }</code>
Namun, selepas mengedit fail HTML dan memuatkan semula halaman, penyemak imbas terus memaparkan kandungan lapuk. Isu ini berterusan walaupun selepas memulakan semula program.
Punca
Punca masalah terletak pada penggunaan folder kongsi Kotak Maya untuk mengehoskan fail HTML. Konfigurasi ini menyebabkan Windows meng-cache kandungan fail, menghalang fungsi http.FileServer daripada menghantar versi yang dikemas kini.
Penyelesaian
Untuk menyelesaikan isu ini, elakkan daripada menggunakan Virtual Box shared folder untuk fail yang dimaksudkan untuk digunakan dalam http.FileServer. Sebaliknya, simpan fail terus pada sistem hos, seperti dalam direktori /testing/:
<code class="go">http.Handle("/", http.FileServer(http.Dir("/home/vagrant/testing/")))</code>
Dengan mengikut garis panduan ini, fungsi http.FileServer akan menyampaikan kandungan fail yang dikemas kini dengan tepat tanpa sebarang isu caching.
Atas ialah kandungan terperinci Mengapa http.FileServer Melayan Fail Lapuk Apabila Menggunakan Folder Kongsi Kotak Maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!