使用Vagrant和NFS时,Grunt watch只能在5秒后检测到文件更改。

12

Grunt watch(grunt-contrib-watch)用于触发浏览器中 web 应用程序的重新加载。 然而,在使用 NFS 进行同步文件夹的 Vagrant 虚拟机中运行时,它对文件更改的注意速度较慢。 更改文件后大约 5 秒才会触发重新加载,尽管预计几乎立即发生。 为什么 grunt watch 如此缓慢地检测更改? 有没有办法使它更快?

使用 VirtualBox 同步文件夹,grunt watch 几乎可以立即检测到文件更改。 但是,由于 VirtualBox 同步文件夹在处理大量文件时速度明显较慢,因此在这种情况下不幸的是不能回滚到它。


当我使用NFS w/ Vagrant时,我遇到了同样的问题。最终我决定使用Samba,现在Grunt几乎可以立即检测到文件更改。这是一个方便的指南,用于在Vagrant框中设置Samba:http://www.kieronhoward.co.uk/vagrant-windows-improve-slow-performance-using-smb-instead-nfs/ - nanook
当我遇到这个问题时,我发现按下 ctrl + c 再次运行 grunt 更快 - 但是对于大多数更改来说等待是可以接受的。 - ArleyM
1个回答

26

在你的Vagrantfile中尝试以下挂载选项:

type: "nfs", mount_options: ['actimeo=1']

这将大大减少NFS文件属性缓存超时时间,当等待gulp和Django服务器重新加载时,我也遇到了类似的问题,在使用Vagrant / NFS时出现了较大的延迟。这个修复了它,文件更改现在可以立即检测到。


3
谢谢,这是我独立撰写问题后得出的同样解决方案。希望其他人不需要花费太多时间来调试。 - Markus Miller
1
@realtebo config.vm.synced_folder "./", "/vagrant", type: "nfs", mount_options: ['actimeo=1'] - Strake
我不经常在这里评论,但是django runserver无法正确重新加载一直困扰着我的团队...这个设置使得速度快了很多,我非常感谢你在这里发布它。 - Remiz

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