首頁 >後端開發 >Golang >為什麼我編輯的檔案沒有由 Virtual Box 中的 Go 檔案伺服器處理程序提供服務?

為什麼我編輯的檔案沒有由 Virtual Box 中的 Go 檔案伺服器處理程序提供服務?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 02:52:29782瀏覽

Why Aren't My Edited Files Being Served by Go's FileServer Handler in Virtual Box?

HTTP 檔案伺服器快取問題

Go 中的 net/http 套件提供了一個用於提供靜態檔案的 FileServer 處理程序。然而,使用者遇到了一個問題,即儘管回應中的 Content-Length 標頭準確,但最近編輯的文件並未顯示。

原因:

問題已追蹤到使用 Virtual Box 共用資料夾來託管靜態檔案。透過共用資料夾存取檔案時,Virtual Box 會執行緩存,導致 FileServer 處理程序提供檔案的過時版本。

範例:

考慮以下程序:

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)
    }
}

使用HTML 檔案:

<code class="html"><!doctype html>
<html>
<body>
    <p>Hello there everyone</p>
</body>
</html></code>

從Vagrant 盒子存取此頁面時,內容不會更新,即使刷新瀏覽器或修改HTML 檔案。

解決方案:

要解決此問題,建議避免使用 Virtual Box 共用資料夾透過 http.FileServer 處理程序提供靜態檔案。相反,將檔案移至 Vagrant 盒子上的本機目錄並從那裡提供它們。

以上是為什麼我編輯的檔案沒有由 Virtual Box 中的 Go 檔案伺服器處理程序提供服務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn