何書こうとしたか忘れた
昨日は「今日この事書こう」みたいなこと決めてたのに忘れてしまった。
忘れてしまったので今日起こったトラブルについてメモしとく
VirtualBoxで開発してるときにローカルに共有フォルダ(shared folders)で開発してるプロジェクトをVM上の公開ディレクトリにシンボリックリンクをはってhttp経由で動作チェックをするみたいなことはよくやると思う。
で、ここで問題が起こるんだけどstaticなファイル(例えばjsやhtml、画像など)を更新しても反映されないということがまれによくある。
原因はNFS(Network File System)でマウントされた共有フォルダ以下のディレクトリをapacheのDocumentRootに設定した場合、カーネルは自身のキャッシュを使ってネットワークからのファイルを 送ることができないことがあることが原因だそうだ。
つまりNFSでマウントされたディレクトリでsendfileを利用しているので、たまにファイルを送ることができなくなって更新以前の静的データを304で送り続けてしまい、結果としてファイルが更新されないという現象が起きるらしい。
ということでhttpd.confやvhosts.confで
EnableSendfile off
と設定すると上手く更新される。
apacheのEnableSendfileについての説明 ( http://httpd.apache.org/docs/2.1/ja/mod/core.html#EnableSendfile )