首页 >后端开发 >Golang >为什么我编辑的文件没有由 Virtual Box 中的 Go 文件服务器处理程序提供服务?

为什么我编辑的文件没有由 Virtual Box 中的 Go 文件服务器处理程序提供服务?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 02:52:29780浏览

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