使用Vagrant进行HAML / SASS开发时的图像显示/中断问题

我正在使用Mac OSX(Snow Leopard)上的Vagrant / VirtualBox VM在本地运行的Rails应用程序进行HAML / SASS更改,每当我对任何引用的图像进行更改时,我都会遇到一个非常奇怪的问题HAML / SASS文件.

以下是发生的事情的一个例子:

>我在浏览器中打开本地Rails应用程序页面,所有图像都正确显示
>我重新调整图像大小(使用Gimp)使其变小并保存更改
>我刷新页面以查看更改并且原始图像仍然显示,但底部截止与我制作图像的小部分成比例
>我从目录中删除图像文件并硬刷新页面以查看会发生什么.
>有时原始的截止图像仍然存在,有时会消失,我只看到丢失的图像路径图标
>我将图像文件移回目录,尝试强制它重新调整大小
>有时这是第一次使用,有时我必须先做3到4次才能看到正确大小的图像
>有时我看到旧的剪切图像重新出现,即使我刷新页面后看不到图像!

如果我对图像文件进行其他更改(例如,如果我使用相同的文件名保存一个全新的图像),似乎会出现同样的问题.除了这个图像问题,对HAML / SASS文件的所有编辑都有效,我可以立即看到我的更改.

我认为这可能是某种浏览器渲染/缓存问题,但在Firefox和Chrome中也会出现类似的问题.如果我使用Firebug,我有时会看到正在拾取正确的文件,但它没有显示在页面本身.

我只能认为这与Vagrant有关.唯一可以保证完全修复它的是重新调整Vagrant盒子,但这需要很长时间.

我意识到这可能不是一个简单的问题,因为它可能与我们的Rails应用程序和Vagrant / VirtualBox的配置有关,但我只是想我会在这里发布问题以防其他人遇到类似的问题.

谢谢!

最佳答案 你可能看到的是VirtualBox共享文件夹文件系统与sendfile系统调用一起出现的问题.如果要从VirtualBox共享文件夹提供文件,则需要在Web服务器上禁用sendfile.这样做很容易:

在Apache中,将其添加到您的配置中:EnableSendfile off

在Nginx中,将其添加到您的配置中:sendfile off;

点赞