##概要
CakePHPでビューを作っている時に、CSSが反映されなくなった場合の対策法まとめです。ちなみに筆者は下記の対策を全部しましたが、結局反映できず嫌になってしばらく放置して戻ってきたら直ってました。何が原因だったのはわからないのでやったこと全部リストにしましたので参考にしてください。
##原因
ブラウザにキャッシュが残っているから
##対策
###①ブラウザのキャッシュを削除する
アプリを確認するのに使うブラウザのキャッシュを削除します。Chromeでは履歴削除でキャッシュが消せます。
###②app/Config/core.phpの編集
下記、コメントアウトされているはずなのでコメントアウトを外します。
Configure::write('debug', 2);
Configure::write('Asset.timestamp', true);
//debug = 0 の時
Configure::write('Asset.timestamp', 'force');
###③Apacheの設定を変える
cd /etc/httpd/conf
sudo vi httpd.conf
でファイルを開き、
EnableMMAP off //これでも解決しなかったらさらに
EnableSendfile off
というのがコメントアウトされてるので有効にしましょう。また、
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
</Directory>
該当箇所が上記のようになっていなければ直しましょう。
sudo service httpd reload
で再起動してくださいね。
###④アプリに蓄積されるキャッシュを消す
/app/tmp/cache/
以下のディレクトリ(modelsとかviewとか)にキャッシュが入っているので、全て削除してしまいましょう。
###⑤コントローラーのbeforeFilterを編集
コントローラの中に、
public function beforeFilter()
{
parent::beforeFilter();
$this->response->disableCache();
}
と追加しましょう。
##最後に
一回サーバーをシャットダウンして、また立ち上げてみるのもありだと思います。
これだけ対策があるのでハマっている方は試してみてください。