ログってなんぼ

日々のメモです

Virtualbox:CSSを変更してもキャッシュされておりブラウザに反映されない

ApacheをVirtualboxのVM上で動かしてローカル開発していると、静的ファイルを更新しても反映されない時があります。

共有フォルダでMacのディレクトリをVM上のApacheから参照しているのが原因なのかなと思い、以下のようにApacheに設定を追加したら解消しました。

core - Apache HTTP サーバ バージョン 2.2

このディレクティブは配送中にファイルの内容を読み込む必要があるときに httpd がメモリマッピングを使うかどうかを制御します。 デフォルトでは、 例えば、mod_include を使って SSI ファイルを配送 するときのように、ファイルの途中のデータをアクセスする必要があるときには Apache は OS がサポートしていればファイルをメモリにマップします。 しかし、環境によっては運用上の問題を防ぐためにメモリマッピングを 使用しないようにした方が良い場合もあります: マルチプロセッサシステムの中にはメモリマッピングをすると httpd の性能が落ちるものがあります。 NFS マウントされた DocumentRoot では、httpd がメモリマップしている間にファイルが削除されたり 短くなったりしたときに起こるセグメンテーションフォールトのために httpd がクラッシュする可能性があります。 これらの問題に当てはまるサーバの設定の場合は、以下のようにして ファイルの配送時のメモリマッピングを使用不可にしてください: 引用元:core - Apache HTTP サーバ バージョン 2.2


core - Apache HTTP サーバ バージョン 2.2

sendfile は read と send を別々に行なうことと、バッファの割り当てを 回避します。しかし、プラットフォームやファイルシステムの中には 運用上の問題を避けるためにこの機能を使用不可にした方が良い場合があります: プラットフォームの中にはビルドシステムが検知できなかった、壊れた sendfile のサポートが存在するものがあります。これは特に バイナリが別のマシンでビルドされ、壊れた sendfile のあるマシンに 移動したときに起こります。 Linux では、sendfile を用いると、 IPv6 使用時に存在する特定ネットワークカードの TCP-checksum オフロードのバグを踏んでしまいます。 Itanium で動いている Linux で、sendfile は 2GB 以上の ファイルを扱うことができないでしょう。 ネットワークマウントされた DocumentRoot (例えば NFS や SMB) では、カーネルは自身のキャッシュを使ってネットワークからのファイルを 送ることができないことがあります。 これらの問題に当てはまるサーバの設定の場合は、以下のようにして この機能を使用不可にしてください:

引用元:core - Apache HTTP サーバ バージョン 2.2


回避設定例

<Directory /path/to/content>
EnableMMAP Off
EnableSendfile Off
</Directory>