$yuzu->log();

技術ネタなど。

Vagrant で作成した環境で CSS が反映されない場合の対処法

昨年爆発的に流行りだして、すでに当たり前になっている Vagrant ですが、VagrantのSyncフォルダをDocumentRootに設定しているとCSS や JS などの静的ファイルの変更が反映されないという現象がおきました。

ゲストOS側ではファイル更新が反映されているのですが、ブラウザ上で確認すると反映されてない状態です。
調べた結果 Apache の設定が原因でした。 http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile

例えば静的なファイルの配送のように、リクエストの処理にファイルの途中のデータのアクセスを必要としないときには、Apache は OS がサポートしていればファイルを読み込むことなく sendfile を使ってファイルの内容を送ります。

Vagrant の古いドキュメントにも記載されていました。
http://docs-v1.vagrantup.com/v1/docs/config/vm/share_folder.html

対処法

それぞれのWebサーバの設定ファイルに一行追加して再起動すればCSS や JS などの静的ファイルの変更が反映されるようになります。

Apacheの場合

EnableSendfile off

Nginxの場合

sendfile off;