静态文件在从Go提供服务时不会更新

我开始学习Go,并且遇到了静态文件句柄的问题。 拥有这个:

func main() { fs := http.FileServer(http.Dir("public")) http.Handle("/", fs) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } 

文件夹结构:

 main.go public - index.html 

当我运行的go run main.go ,之后在index.html改变一些东西,再运行go run main.go ,在浏览器中查看不会改变。 所以我GOOGLE了一下,认为他们是在编译的二进制文件,并且因为main.go没有改变,所以不重新编译它。 所以我跑跑go run -a main.go强制重新编译,但它没有帮助。

我清除历史和caching铬,甚至尝试另一个浏览器和curl ,但仍然看到旧的静态文件,而在文件系统中只有新的版本。 所以这不是关于浏览器。 实际上,有一件事情是在浏览器中看到新版本的静态文件时,将public重命名为public2 (例如),并在main.go进行相同的更改。

这不是Go问题,因为这个例子在其他用户中可以正常工作。 所以这是我的系统。 我在Vagrant的默认Ubuntu 16.04上运行该代码。

vagrantfile:

 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.network "forwarded_port", guest: 8080, host: 8080 config.vm.network "forwarded_port", guest: 5432, host: 5432 end 

请求标题:

 2017/11/19 18:25:45 request.RequestURI: / 2017/11/19 18:25:45 request.RemoteAddr: 10.0.2.2:50584 2017/11/19 18:25:45 request.TLS: <nil> 2017/11/19 18:25:45 Request Headers: 2017/11/19 18:25:45 Accept : [text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8] 2017/11/19 18:25:45 Accept-Encoding : [gzip, deflate, br] 2017/11/19 18:25:45 Accept-Language : [en-US,en;q=0.9,ru;q=0.8] 2017/11/19 18:25:45 Cache-Control : [max-age=0] 2017/11/19 18:25:45 Connection : [keep-alive] 2017/11/19 18:25:45 If-Modified-Since : [Sun, 19 Nov 2017 16:24:53 GMT] 2017/11/19 18:25:45 Upgrade-Insecure-Requests : [1] 2017/11/19 18:25:45 User-Agent : [Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36] 

回应标题:

 HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 2010 Content-Type: text/html; charset=utf-8 Last-Modified: Sun, 19 Nov 2017 16:24:53 GMT Date: Sun, 19 Nov 2017 18:25:27 GMT 

结论:我运行在另一个虚拟机,一切正常,所以有一些关于虚拟机,但现在我不知道是什么问题。