CakePHP2.x系のcssがキャッシュされて修正が確認出来ない⇒apacheのEnableMMAPをOffで解決

CakePHP2.x系で開発を始めたのですが、cssを修正してもキャッシュされて修正が確認出来ません。

色々試してみた手順等記録しておきます。

core.phpのAsset.timestampを使用

ブラウザがcssをキャッシュしてしまう問題の対策として、test.css?2016xxxxみたいなパラメータをつけたりして回避するやり方があるのですが、CakePHP2.x系ではcore.phpの以下の設定で自分でパラメータをつけなくても勝手につける機能があります。

 Configure::write('debug', 2);
 Configure::write('Asset.timestamp', true);

or

 Configure::write('Asset.timestamp', 'force');

参考サイト様

http://tech.oga-ria.com/asset-timestamp-of-cakephp-is-useful/

ブラウザのキャッシュの場合これでうまくいくはずですが、自分の環境ではこれでもキャッシュが残り、修正前のcssが反映されてしまいました。

あれ?と思い、ブラウザにChromeを今まで使っていましたがFireFoxに変えたりIEに変えたりしても、修正前のcssが反映されます。cssの中身全部消したら消えるのですが。どうもブラウザ側ではなくサーバ側のキャッシュのようなのです。

apacheを調べています。わかり次第追記します。

わかりました。

思った通りapacheの設定でした。

EnableMMAP ・・・配送中にファイルを読み込むためにメモリマッピングを 使うかどうか

EnableMMAPをOffにしてあげれば良いようです。

こんな感じになりました。↓

<VirtualHost *:80>
 ServerName xxxxx
 DocumentRoot xxxxxx
 <Directory xxxxxx>
 ・・・・・
 EnableMMAP Off
 EnableSendfile Off
 </Directory>
</VirtualHost>

他に作ったvagrant環境ではバージョンが違うからかこのような設定をしていないのですが、今回は必要でした。

参考サイト様

http://qiita.com/sugiii8/items/233e88aa26f00b290f38

http://tech-gym.com/2015/07/%E6%9C%AA%E5%88%86%E9%A1%9E/1683.html ⇒こちらのサイト様と全く同じ現象でcssに文字化けが入っていました。

https://httpd.apache.org/docs/2.2/ja/mod/core.html#enablemmap