go 核心中的 http 包有問題。盡管響應正文中的 Content-Length 是正確的,但文件內容似乎已被緩存。這里演示的是我正在編寫的應用程序的簡化版本。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) }}現在假設我們有一個非常簡單的 html 頁面:<!doctype html><html><body> <p>Hello there</p></body></html>我執行 go 程序并http://localhost:8080在瀏覽器中訪問以顯示:Hello there檢查響應標頭,我可以看到以下內容: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現在我編輯 html 文件,以便<p>標記包含Hello there everyone并重新加載頁面。我得到以下信息:Hello there再次查看我得到的響應標頭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 處理程序提供的實際文件內容。即使在關閉程序并執行go run src/.../main.go. 到目前為止,我發現清除明顯緩存的文件版本的唯一方法是重新啟動運行程序的機器。我嘗試了以下方法:在 win/ubuntu/osx 10.8.5 上執行程序瀏覽 golang.org/src 上的函數/接口鏈,查看提供的文件是否緩存在磁盤上的任何位置對此的任何幫助將不勝感激。
http.FileServer 緩存文件并在編輯后提供舊版本
慕的地6264312
2021-06-29 09:55:09
