我已经安装了nginx,而且生产工作非常好,但是在开发时我有时会遇到这个问题。
为了重现这个问题,我做了以下工作:
在名为test.html的公用文件夹中用文本“hello”创build一个文件。
在浏览器中打开test.html,正确显示“hello”。
修改文件test.html以包含文本“hello world”。
加载网页,仍然说“你好”。
我的第一个猜测是我的浏览器正在caching这个,但我试着清除caching,甚至使用不同的浏览器,或者只是原始的wget,但都是一样的。
我调查了访问日志,发现当更改发生时,确实被注意到,因为有两个状态为200的访问,并且任何后续的没有更改的重新加载是304。
此外,服务器正在虚拟机中运行,并从链接的文件夹中获取文件,所以我怀疑VM可能无法正确看到文件,但将其加载到VM中显示更改正常。
重新启动nginx也没有帮助。 重新启动整个虚拟机,但每次都必须要做到这一点非常糟糕。 新文件反映良好,只是修改现有的文件是麻烦的。 就我所知,我没有设置任何caching。
我怀疑nginx正在做一些caching,无论是在磁盘上还是在内存中,尽pipe注意到文件已经改变,但是当被问到时它仍然返回旧的caching版本。
只是寻找一些可能的解决scheme?
–Update–
我查看了configuration文件,发现了一些我不明白的东西:
sendfile on;
评论这条线修复了这个问题。 有人可以解释这是什么比http://articles.slicehost.com/2007/12/13/ubuntu-gutsy-nginx-configuration-1/更好吗?
– 更新2 –
添加到Nginx wiki的信息: https : //www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#config-changes-not-reflected