之前提到說通過Vagrant部署開發環境,使用目錄共享模式,在本地磁盤進行開發,而通過虛擬機環境運行開發的頁面。
是的,一切看起來都是那麼的順利,首先基於VirtualBox安裝了Vagrant,接下來,按照以往部署環境的習慣,在VM中安裝了nginx作為開發運行環境,並且將本地的共享目錄作為nginx的web目錄,然後打開頁面,看上去似乎都很正常,但接下來,你發現了一個神奇的事情,你修改替換了一個css,一張圖片,然後刷新浏覽器,發現什麼都沒有變,然後你有非常猛烈、使勁的F5,依舊還是沒有改變,是的,你看看編輯器,似乎替換是正常的,在看看VM上的文件,也都是對的,是的,嘗試重啟nginx,依舊沒有任何變化,你開始懷疑php5-fpm甚至於毫不相干的memcached和mysql,但都無濟於事。也不知道是什麼讓這些文件被“緩存”了呢。
當你嘗試修改一個js,並且用同樣的方法更新之後,會遇到類似的問題,是的,就算重啟VM上任何服務,甚至重啟VM,依舊沒有用,當然,比起其他資源文件,浏覽器的反應會強烈一些,因為浏覽器會提示未知錯誤,而你通過浏覽器查看你修改的JS文件,會看到文件尾巴有下面奇怪的隨機字符:
�����������������
這到底是什麼東西呢?編碼錯誤?緩存異常?又或是其他什麼?
是的,你嘗試花費很多時間,試驗各種各樣的方法去解決這個問題,其實對於nginx來說,你只需要修改配置文件(nginx.conf)中的一行重啟就能簡單的解決這個問題:
sendfile off;
找到 nginx.conf ,把裡面的 “sendfile on” 修改為 “sendfile off”。
當然,如果你使用Apache也可能遇到類似的問題,那麼同樣也有類似的配置需要修改:
EnableSendfile off
關於這個問題的參照:
https://github.com/mitchellh/vagrant/issues/351#issuecomment-1339640
http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour
如何使用vagrant在虛擬機安裝Hadoop集群 http://www.linuxidc.com/Linux/2013-04/82750.htm
Vagrant 中高效的 Puppet 模塊管理 http://www.linuxidc.com/Linux/2014-05/101873.htm
使用 Vagrant 和 Fabric 用於集成測試 http://www.linuxidc.com/Linux/2014-07/104113.htm
使用 Vagrant 搭建開發環境 http://www.linuxidc.com/Linux/2014-07/104116.htm
Windows 下配置 Vagrant 環境 http://www.linuxidc.com/Linux/2014-07/104115.htm
Vagrant 的詳細介紹:請點這裡
Vagrant 的下載地址:請點這裡