vagrant共享目录静态文件编辑后乱码

通过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

http://blog.csdn.net/zmj_88888888/article/details/9169227