通过Vagrant部署开发环境,使用目录共享模式,在本地磁盘进行开发,而通过虚拟机环境运行开发的页面。
当你尝试修改一个js,并且用同样的方法更新之后,会遇到类似的问题,是的,就算重启VM上任何服务,甚至重启VM,依旧没有用,当然,比起其他资源文件,浏览器的反应会强烈一些,因为浏览器会提示未知错误,而你通过浏览器查看你修改的JS文件,会看到文件尾巴有下面奇怪的随机字符:
?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77?1?71?1?77
这到底是什么东西呢?编码错误?缓存异常?又或是其他什么?
是的,你尝试花费很多时间,试验各种各样的方法去解决这个问题,其实对于nginx来说,你只需要修改配置文件(nginx.conf)中的一行重启就能简单的解决这个问题:
sendfile off;
找到 nginx.conf ,把里面的 “sendfile on” 修改为 “sendfile off”。
当然,如果你使用Apache也可能遇到类似的问题,那么同样也有类似的配置需要修改:
EnableSendfile off
系统调用sendfile()通过 DMA把硬盘数据拷贝到 kernel buffer,然后数据被 kernel直接拷贝到另外一个与 socket相关的 kernel buffer。这里没有 user mode和 kernel mode之间的切换,在 kernel中直接完成了从一个 buffer到另一个buffer的拷贝。
参考
https://github.com/mitchellh/vagrant/issues/351#issuecomment-1339640