http.FileServer in Go direka untuk menyampaikan fail statik daripada sistem fail tertentu, menyediakan cara yang cekap dan mudah untuk mengehoskan kandungan web. Walau bagaimanapun, keadaan tertentu boleh membawa kepada tingkah laku caching yang tidak dijangka, mengakibatkan fail lapuk disampaikan.
Satu isu sedemikian timbul apabila menggunakan folder kongsi Kotak Maya untuk menyimpan fail untuk http.FileServer. Dalam senario ini, masalahnya adalah berkaitan dengan akses disegerakkan bagi fail ini antara hos dan sistem pengendalian tetamu.
Untuk menggambarkan, mari kita pertimbangkan contoh yang disediakan:
<code class="go">http.Handle("/", http.FileServer(http.Dir("./www/"))) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) }</code>
Dengan HTML fail seperti:
<code class="html"><!doctype html> <html> <body> <p>Hello there</p> </body> </html></code>
Apabila mula-mula disiarkan, kandungan dipaparkan dengan betul dan pengepala respons menunjukkan panjang kandungan yang sesuai dan cap waktu terakhir diubah suai.
Walau bagaimanapun, apabila membuat perubahan pada HTML fail dan memuatkan semula halaman, kandungan asal masih dipaparkan. Ini kerana fail yang diubah suai tidak dicache dengan betul oleh sistem pengendalian disebabkan oleh isu penyegerakan antara hos dan tetamu. Tingkah laku ini diperhatikan walaupun selepas keluar dan memulakan semula program.
Penyelesaian kepada masalah ini adalah untuk mengelak daripada menggunakan folder kongsi Kotak Maya semasa mengehos fail untuk http.FileServer. Dengan menyimpan fail pada sistem pengendalian tetamu secara langsung, isu penyegerakan dihapuskan, membolehkan pelayan fail cache fail dengan betul dan menyampaikan kandungan yang dikemas kini.
Atas ialah kandungan terperinci Mengapa My Go http.FileServer Melayan Fail Lapuk Apabila Menggunakan Folder Kongsi Kotak Maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!