首页 >后端开发 >Golang >使用 Virtual Box 共享文件夹时,为什么我的 Go http.FileServer 提供过时的文件?

使用 Virtual Box 共享文件夹时,为什么我的 Go http.FileServer 提供过时的文件?

Barbara Streisand
Barbara Streisand原创
2024-11-04 08:46:02759浏览

Why Is My Go http.FileServer Serving Outdated Files When Using Virtual Box Shared Folders?

Go 中 http.FileServer 的缓存问题

Go 中的 http.FileServer 旨在为给定文件系统中的静态文件提供服务,提供了一种高效且便捷的方式托管网络内容。但是,某些情况可能会导致意外的缓存行为,从而导致提供过时的文件。

使用 Virtual Box 共享文件夹存储 http.FileServer 的文件时会出现这样的问题。在这种情况下,问题与主机和来宾操作系统之间这些文件的同步访问有关。

为了说明这一点,让我们考虑提供的示例:

<code class="go">http.Handle("/", http.FileServer(http.Dir("./www/")))
err := http.ListenAndServe(":8080", nil)
if err != nil {
    fmt.Println(err)
}</code>

使用 HTML文件如下:

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

最初提供时,内容显示正确,并且响应标头显示适当的内容长度和上次修改时间戳。

但是,对 HTML 进行更改后文件并重新加载页面,仍显示原始内容。这是因为由于主机和来宾之间的同步问题,操作系统未正确缓存修改后的文件。即使退出并重新启动程序后也会出现此行为。

此问题的解决方案是在为 http.FileServer 托管文件时避免使用 Virtual Box 共享文件夹。通过将文件直接存储在来宾操作系统上,可以消除同步问题,从而使文件服务器能够正确缓存文件并提供更新的内容。

以上是使用 Virtual Box 共享文件夹时,为什么我的 Go http.FileServer 提供过时的文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn