http.FileServer 的快取問題
本文解決了在 Go 應用程式中使用 http.FileServer 函數時遇到的特定挑戰。當函數快取文件內容並在文件編輯後繼續提供舊版本時,就會出現問題。
在一個簡化的範例中,Go 程式從./www/ 目錄提供靜態HTML 檔案:
<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>
但是,編輯HTML 檔案並重新載入頁面後,瀏覽器繼續顯示過時的內容。即使重新啟動程式後,問題仍然存在。
原因
問題的根源在於使用 Virtual Box 共用資料夾來託管 HTML 檔案。此配置會導致 Windows 快取檔案內容,阻止 http.FileServer 函數提供更新版本。
解決方案
要解決此問題,請避免使用 Virtual Box 共用用於在 http.FileServer 中使用的檔案的資料夾。相反,請將檔案直接儲存在主機系統上,例如/testing/ 目錄中:
<code class="go">http.Handle("/", http.FileServer(http.Dir("/home/vagrant/testing/")))</code>
透過遵循此準則,http.FileServer 函數將準確地提供更新的檔案內容,而不會出現任何緩存問題。
以上是為什麼使用 Virtual Box 共用資料夾時 http.FileServer 提供過期檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!