我有一个使用Apache HTTPD 2.2作为Web服务器的CentOS 6.5虚拟机,我正在使用GulpJS进行构build。 当我更新CSS文件时,GulpJS构build过程运行正常,如果我查看VM上的文件,则可以看到更新,但是通过Apache HTTPD提供时,文件没有更改。 如果我使用vi编辑文件,不作任何改变,只需保存一遍Apache HTTPD然后select更改并输出正确的文件。
我已经禁用了mod_cache模块(例如注释掉了LoadModule指令),因为我认为这可能是原因,但这没有什么区别。
有没有其他人遇到这个问题,并知道如何解决它?
[更新] – 刚刚查看的httpd访问日志,我可以看到,每次更新之前和之后的文件是由httpd服务,但没有任何更改:
192.168.56.1 - - [22/Jun/2014:09:27:42 +0100] "GET /includes/min/stylesheet.min.css HTTP/1.1" 200 135882 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" 192.168.56.1 - - [22/Jun/2014:09:29:22 +0100] "GET /includes/min/stylesheet.min.css HTTP/1.1" 200 135878 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
除了文件长度。 这将build议httpd正在看到文件更新,但它不在浏览器中更新。 我已经尝试了几种不同的浏览器,清除浏览器caching等,但直到我使用vi编辑服务器上的文件,并再次保存它没有浏览器将加载文件的新版本,这使我想起httpd仍然服务该文件的版本错误。 很奇怪
[更新2] – 我相信这可能是与VirtualBox和共享文件夹。 该站点的文件位于主机(Mac OS X 10.9.3)上,并使用NodeJS进行编译。 它们被编译成一个使用VBox的共享文件夹与客户操作系统(CentOS)共享的文件夹。 如果我通过控制台查看目录中的文件,我看到:
-rwxrwxrwx. 1 root root 135881 Jun 23 2014 stylesheet.min.css
正如你所看到的,而不是正常的月份,date和时间的文件,它有月,日和年代替。 这看起来不合我心,但我不知道这是什么意思,或者它是否意义重大。
find解决办法。 这是一个Apache HTTPDcaching问题。 我把mod_cache和mod_disk_cache模块放回去,然后设置下面的指令:
CacheDisable /
这已经解决了这个问题。 不知道为什么简单地不加载caching模块没有相同的效果。
更新:虽然这确实似乎解决了一段时间的问题,它似乎并不是真正的解决scheme。 这个问题实际上是与在VirtualBox上运行的机器以及它所服务的文件在主机上并通过使用vboxsf挂载到guest虚拟机相关的。 这个问题和解决scheme在下面的博客文章中解释:
http://www.frandieguez.com/blog/2013/05/solving-caching-issues-with-vagrant-on-vboxsf/