http.FileServer 的缓存问题
本文解决了在 Go 应用程序中使用 http.FileServer 函数时遇到的特定挑战。当函数缓存文件内容并在文件被编辑后继续提供旧版本时,就会出现问题。
在一个简化的示例中,Go 程序从 ./www/ 目录提供静态 HTML 文件:
<code class="go">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) } }</code>
但是,编辑 HTML 文件并重新加载页面后,浏览器继续显示过时的内容。即使重新启动程序后,问题仍然存在。
原因
问题的根源在于使用 Virtual Box 共享文件夹来托管 HTML 文件。此配置会导致 Windows 缓存文件内容,从而阻止 http.FileServer 函数提供更新版本。
解决方案
要解决此问题,请避免使用 Virtual Box 共享用于在 http.FileServer 中使用的文件的文件夹。相反,请将文件直接存储在主机系统上,例如 /testing/ 目录中:
<code class="go">http.Handle("/", http.FileServer(http.Dir("/home/vagrant/testing/")))</code>
通过遵循此准则,http.FileServer 函数将准确地提供更新的文件内容,而不会出现任何缓存问题。
以上是为什么使用 Virtual Box 共享文件夹时 http.FileServer 提供过期文件?的详细内容。更多信息请关注PHP中文网其他相关文章!