CakePHP2.x系で開発を始めたのですが、cssを修正してもキャッシュされて修正が確認出来ません。
色々試してみた手順等記録しておきます。
core.phpのAsset.timestampを使用
ブラウザがcssをキャッシュしてしまう問題の対策として、test.css?2016xxxxみたいなパラメータをつけたりして回避するやり方があるのですが、CakePHP2.x系ではcore.phpの以下の設定で自分でパラメータをつけなくても勝手につける機能があります。
1 2 |
Configure::write('debug', 2); Configure::write('Asset.timestamp', true); |
or
1 |
Configure::write('Asset.timestamp', 'force'); |
参考サイト様
http://tech.oga-ria.com/asset-timestamp-of-cakephp-is-useful/
ブラウザのキャッシュの場合これでうまくいくはずですが、自分の環境ではこれでもキャッシュが残り、修正前のcssが反映されてしまいました。
あれ?と思い、ブラウザにChromeを今まで使っていましたがFireFoxに変えたりIEに変えたりしても、修正前のcssが反映されます。cssの中身全部消したら消えるのですが。どうもブラウザ側ではなくサーバ側のキャッシュのようなのです。
apacheを調べています。わかり次第追記します。
わかりました。
思った通りapacheの設定でした。
1 |
EnableMMAP ・・・配送中にファイルを読み込むためにメモリマッピングを 使うかどうか |
EnableMMAPをOffにしてあげれば良いようです。
こんな感じになりました。↓
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ServerName xxxxx DocumentRoot xxxxxx <Directory xxxxxx> ・・・・・ <span style="color: #ff0000;"> EnableMMAP Off</span> <span style="color: #ff0000;"> EnableSendfile Off</span> </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