go 核心中的 http 包有問題。盡管響應(yīng)正文中的 Content-Length 是正確的,但文件內(nèi)容似乎已被緩存。這里演示的是我正在編寫的應(yīng)用程序的簡化版本。package mainimport ( "fmt" "net/http")func main() { http.Handle("/", http.FileServer(http.Dir("./www/"))) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println(err) }}現(xiàn)在假設(shè)我們有一個非常簡單的 html 頁面:<!doctype html><html><body> <p>Hello there</p></body></html>我執(zhí)行 go 程序并http://localhost:8080在瀏覽器中訪問以顯示:Hello there檢查響應(yīng)標頭,我可以看到以下內(nèi)容:Status Code:200 OKAccept-Ranges:bytesContent-Length:68Content-Type:text/html; charset=utf-8Date:Fri, 20 Dec 2013 10:04:03 GMTLast-Modified:Fri, 20 Dec 2013 10:03:32 GMT現(xiàn)在我編輯 html 文件,以便<p>標記包含Hello there everyone并重新加載頁面。我得到以下信息:Hello there再次查看我得到的響應(yīng)標頭Status Code:200 OKAccept-Ranges:bytesContent-Length:77Content-Type:text/html; charset=utf-8Date:Fri, 20 Dec 2013 10:04:34 GMTLast-Modified:Fri, 20 Dec 2013 10:04:14 GMT因此,Content-Length已更改以及上次修改但不是 http.FileServer 處理程序提供的實際文件內(nèi)容。即使在關(guān)閉程序并執(zhí)行g(shù)o run src/.../main.go. 到目前為止,我發(fā)現(xiàn)清除明顯緩存的文件版本的唯一方法是重新啟動運行程序的機器。我嘗試了以下方法:在 win/ubuntu/osx 10.8.5 上執(zhí)行程序瀏覽 golang.org/src 上的函數(shù)/接口鏈,查看提供的文件是否緩存在磁盤上的任何位置對此的任何幫助將不勝感激。
http.FileServer 緩存文件并在編輯后提供舊版本
慕的地6264312
2021-06-29 09:55:09