Drushでキャッシュをクリアする方法 (drush cache-clear)


皆さんこんにちは。開発環境ばかり整えて開発作業はしてないと言う本末転倒な大野です。
今回はDrushで最も多用するコマンドの一つである、Drupalのキャッシュをクリアするコマンドについて解説します。
Drupalでの開発に携わったからなら「キャッシュが効いていて更新したはずなのに更新されない現象」に悩まされたことがありますよね?Drushを使えばサクッとコマンドライン上から解消することができます。
やってみる
まずはターミナル上で目的のサイトのルートディレクトリ以下へ移動します。Macだったら大体こんな感じです。
$ cd ~/Sites/drupal
コマンドラインから下記のようにタイプしてみましょう。
$ drush cache-clear
ズラッとキャッシュできる項目が羅列されます。もし項目数が少ない場合は、そのディレクトリがDrupalのサイトでは無いか、正しくsettings.phpが設定できていない可能性があります。
Enter a number to choose which cache to clear.
[0] : Cancel
[1] : all
[2] : drush
[3] : theme-registry
[4] : menu
[5] : css-js
[6] : block
[7] : module-list
[8] : theme-list
[9] : registry
[10] : token
[11] : views
目的にあったキャシュの番号を入力してエンターを押せば、それに関するキャッシュがクリアされます。とにかく全部クリアしたい場合は1を入力してください。正しくキャッシュがクリアされれば下記の様に表示されます。
'all' cache was cleared. [success]
もっと早くキャッシュをクリアしたい
コマンドがちょっと長くて少しタイプするのが面倒ですね。実はdrushコマンドのcache-clearの部分はccと省略することができます。そして第2引数にクリアするキャッシュタイプを直接指定することができるので、下記の様にコマンドを短くすることができます。
$ drush cc all
更にもっと早くキャッシュクリアしたい
私の場合多用するコマンドなので、下記のようにbashのエイリアスを組んで3文字タイプするだけでクリアできるようにしています(笑)
alias dcc='drush cache-clear all'
管理画面上からやDevelモジュールでもキャッシュクリアすることはもちろん可能ですが、場合によってはコマンドラインからキャッシュをクリアしたほうが早いケースが多々あります。また、何らかのトラブルで管理画面にアクセスできない場合でも、Drushコマンドなら作動することもあります。まだDrushを使用してない方はこの機会に準備しておくと、後のトラブルの対応が楽になるかもしれません。