CentOS 6.5 VM WebサーバーとしてApacheHTTPD 2.2を使用してセットアップし、ビルドプロセスにGulpJSを使用しています。CSSファイルを更新すると、GulpJSビルドプロセスは正常に実行されます。 VM更新を確認できますが、Apache HTTPD経由で提供された場合、ファイルに変更はありません。viを使用してファイルを編集する場合は、何もしないでください。変更を加えて再度保存するだけで、Apache HTTPDが変更を取得し、正しいファイルを出力します。
Mod_cacheモジュールを無効にしました(たとえば、LoadModuleディレクティブをコメントアウトしました)。これが原因である可能性があると思いましたが、違いはありませんでした。
他の誰かがこの問題に遭遇し、それを修正する方法を知っていますか?
[更新] -httpdアクセスログを見ているだけで、更新の前後に毎回httpdによってファイルが提供されていることがわかりますが、何も変更されていません。
192.168.56.1 - - [22/Jun/2014:09:27:42 +0100] "GET /includes/min/stylesheet.min.css HTTP/1.1" 200 135882 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
192.168.56.1 - - [22/Jun/2014:09:29:22 +0100] "GET /includes/min/stylesheet.min.css HTTP/1.1" 200 135878 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
ファイルの長さは別として。これは、httpdがファイルの更新を確認しているが、ブラウザーでは更新されていないことを示しています。いくつかの異なるブラウザを試したり、ブラウザのキャッシュをクリアしたりしましたが、viを使用してサーバー上のファイルを編集して再度保存するまで、ブラウザは新しいバージョンのファイルをロードしません。これにより、httpdがまだ機能していると思います。ファイルのバージョンが間違っています。とても奇妙です。
[更新2]-これはVirtualBoxと共有フォルダに関係しているのではないかと思います。サイトのファイルはホスト(Mac OS X 10.9.3)にあり、NodeJSを使用してそこでコンパイルされます。これらは、VBoxの共有フォルダーを使用してゲストOS(CentOS)と共有されるフォルダーにコンパイルされます。コンソールを介してディレクトリ内のファイルを見ると、次のように表示されます。
-rwxrwxrwx. 1 root root 135881 Jun 23 2014 stylesheet.min.css
ご覧のとおり、ファイルの通常の月、日、時刻の代わりに、月、日、年があります。これは私には場違いに見えますが、これが何を意味するのか、それが重要であるかどうかはわかりません。
これに対する解決策を見つけました。これはApacheHTTPDキャッシュの問題でした。 mod_cacheモジュールとmod_disk_cacheモジュールを元に戻し、次のディレクティブを設定します。
CacheDisable /
これで問題は解決しました。キャッシュモジュールをロードしないだけでは同じ効果が得られなかった理由がわかりません。
更新:これはしばらくの間問題を解決したように見えましたが、実際の解決策ではないようです。問題は、実際には、VirtualBoxで実行されているマシンと、それが提供しているファイルがホストマシン上にあり、vboxsfを使用してゲストにマウントされていることに関係していることが判明しました。問題と解決策は、次のブログ投稿で説明されています。
http://www.frandieguez.com/blog/2013/05/solving-caching-issues-with-vagrant-on-vboxsf/