Laravel 是not实际上that慢的。 500-1000ms是荒谬的;我在调试模式下将其降低到 20 毫秒。
问题是 Vagrant/VirtualBox + 共享文件夹。我没有意识到他们的性能受到了如此大的打击。我猜因为 Laravel 有如此多的依赖项(加载约 280 个文件)并且每个文件读取都很慢,所以它加起来非常快。
克里夫斯为我指明了正确的方向,这篇博文 https://servercheck.in/blog/rsync-vagrant-15-file-performance-windows-dev描述了 Vagrant 1.5 中的一项新功能,可让您将文件同步到 VM,而不是使用共享文件夹。
Windows 上没有本机 rsync 客户端,因此您必须使用cygwin http://cygwin.com/install.html。安装它,并确保选中 Net/rsync。添加C:\cygwin64\bin
到你的道路。 [或者可以安装在Win10/Bash上]
Vagrant 推出新功能 https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html。我正在使用 Puphet,所以我的 Vagrantfile 看起来有点有趣。我必须将其调整为如下所示:
data['vm']['synced_folder'].each do |i, folder|
if folder['source'] != '' && folder['target'] != '' && folder['id'] != ''
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}",
id: "#{folder['id']}",
type: "rsync",
rsync__auto: "true",
rsync__exclude: ".hg/"
end
end
全部设置完毕后,请尝试vagrant up
。如果一切顺利,您的机器应该启动并且应该复制所有文件。你需要运行vagrant rsync-auto
在终端中保持文件最新。您将付出一点延迟的代价,但为了将页面加载速度提高 30 倍,这是值得的!
如果您使用 PhpStorm,它的自动上传功能甚至比 rsync 更好。 PhpStorm 会创建大量临时文件,这些文件可能会导致文件监视程序出错,但如果您让它自己处理上传,它会很好地工作。
另一种选择是使用lsyncd https://github.com/axkibe/lsyncd。我在 Ubuntu 主机 -> FreeBSD 客户机上使用它取得了巨大成功。我还没有在 Windows 主机上尝试过。
我现在使用 Docker +DevSpace https://devspace.sh/。 DevSpace 具有比 Docker 挂载目录快 1000 倍的同步功能。