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

4
我正在为一个Rails应用程序做HAML/SASS更改,我在Mac OSX(Snow Leopard)上使用Vagrant/VirtualBox虚拟机本地运行该应用程序,并且每当我更改任何HAML/SASS文件中引用的图像时,就会遇到一个非常奇怪的问题。
以下是发生的情况示例:
- 我在浏览器中打开本地Rails应用程序页面,所有图像都正确显示。 - 我重新调整图像大小(使用Gimp)使其变小并保存更改。 - 我刷新页面以查看更改,但原始图像仍然显示,但底部被剪裁掉,与我缩小图像的比例成正比。 - 我从目录中删除图像文件并强制刷新页面以查看发生了什么。 - 有时原始被剪裁的图像仍然存在,有时会消失并且只会看到缺少的图像路径图标。 - 我将图像文件移回目录以尝试强制它选择重新调整大小。 - 有时这第一次就有效,有时我必须重复3或4次才能看到正确大小的图像。 - 有时即使我刷新了页面并没有看到任何图像,我也会看到旧的被剪裁的图像重新出现!
如果我对图像文件进行其他更改(例如,如果我使用相同的文件名保存完全新的图像),则会出现相同的问题。除了这个图像问题外,对HAML/SASS文件的所有编辑都有效,并且我可以立即看到我的更改。
我认为这可能是某种浏览器呈现/缓存问题,但在Firefox和Chrome中也会出现类似的问题。如果我使用Firebug,有时可以看到正在选择正确的文件,但它没有显示在页面本身中。
我只能想到这与Vagrant有关。唯一可以完全修复它的事情是重新启动Vagrant box,但那需要很长时间。
我意识到这可能不是一个简单的问题,因为它可能与我们的Rails应用程序和Vagrant/VirtualBox的配置有关,但我只是想在这里发布问题,以防其他人遇到类似的问题。
谢谢!

可能是重复问题:https://dev59.com/qGkx5IYBdhLWcg3wCf8q - ANeves
1个回答

2
你可能遇到的问题是VirtualBox共享文件夹文件系统与sendfile系统调用之间存在问题。如果你正在从VirtualBox共享文件夹中提供文件,则需要禁用Web服务器上sendfile的使用。做法很简单:
在Apache中,将以下内容添加到你的配置中:EnableSendfile off 在Nginx中,将以下内容添加到你的配置中:sendfile off;

太好了,这个修复完美地起作用了。感谢你解决了这个谜团! - Jamie Andrews

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接