4

我正在使用 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 的配置有关,但我只是想我会在这里发布这个问题,以防其他人有类似的问题。

谢谢!

4

1 回答 1

2

您可能看到的是 VirtualBox 共享文件夹文件系统与sendfile系统调用一起存在的问题。sendfile如果您从 VirtualBox 共享文件夹提供文件,则需要在您的网络服务器上禁用。这样做很容易:

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

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

于 2012-03-29T16:20:53.813 回答