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中文网其他相关文章!