亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

http.FileServer 緩存文件并在編輯后提供舊版本

http.FileServer 緩存文件并在編輯后提供舊版本

Go
慕的地6264312 2021-06-29 09:55:09
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 上的函數/接口鏈,查看提供的文件是否緩存在磁盤上的任何位置對此的任何幫助將不勝感激。
查看完整描述

3 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

如果您使用某種代理,那將是問題所在。一些代理緩存經常使用的文件(通常只有 .js、.css 等,但通常不是 .html)和 IP 地址。如果服務器在您的本地計算機上,請嘗試使用localhost127.0.0.1代替 IP 地址,這樣請求就不會通過代理。如果不是,您必須配置或禁用代理才能訪問最新版本的網站。我不知道這有多普遍,但這就是問題所在。


查看完整回答
反對 回復 2021-07-12
  • 3 回答
  • 0 關注
  • 324 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號