2018-01-14

Drupal8のテーマ作成にあたり、キャッシュを無効にする

■キャッシュ機能とは


CMSであるDrupal8には、キャッシュ機能がある。

既知の通りホームページは、文字、写真、動画や音の情報を組み立てて、見やすいように整形されてからブラウザに表示される。

ホームページを表示する際に、たくさんの部品(文字や写真など)を様々なフォルダーからかき集めて、最終的に決められた方法で文字や画像を整えて表示する。まるで自動車を完成させるために、多くの工場から部品を集めて自動車工場で設計図通りに組み立てる仕組みと似ている。

ホームページがブラウザに表示され、2回目以降同一のページが表示される場合には、初めて表示される同じ手続きで表示されると効率が悪い。そこで、出来る限り効率よくホームページを表示するために、多くの部品を集めて整形した状態を特定フォルダに保存する。同一ページが2回目以降呼び出された際には、特定フォルダーから完成されたページを直接呼び出し表示する。
これをキャッシュ機能という。

キャッシュ機能は効率よく素早く表示する長所があるが、短所もある。
表示された直後に文字内容や写真の表示位置が変更されても、変更内容が呼び出されず、変更前のまま表示されるため、リアルタイムで表示する場合には不便である。
最初に表示されてから、一定時間経過すると保存されたページの内容は自動削除されて、変更された新しい内容が表示される仕組みとなっている。



■なぜ、キャッシュ機能を無効にするのか?


ホームページのデザインを作成する際に、変更した内容はキャッシュ機能によってすぐに反映されない。反映させるには、一度表示された内容をパソコン上から削除しなければならない。デザインする際にいちいち昔のデータを削除する行為は、非効率である。だから、キャッシュ機能を無効にする。



■Drupal8のキャッシュ機能を無効にする方法


【 環境 】
OS : Linux Mint18
Drupal Version : 8.4.4
DataBase : SQLite

【 概要 】
キャッシュ機能を無効にするために、特定のフォルダー内にファイルを作成し、既存の内容に書き加えたり一部削除する。

【 方法 】

    ファイルの作成(1)
---------------------------------

/sites ディレクトリにある example.settings.local.php を /sites/default ディレクトリに settings.local.php という名前でコピーする。

    ファイルの編集(1)
---------------------------------

/sites/default/settings.php にある以下の内容がコメントアウトされているので、コメントを解除し、 ローカル用の設定ファイルを追加で読み込む。

    ▶settings.php 編集 (以下3行をコメントアウト  789行目辺り)
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
include $app_root . '/' . $site_path . '/settings.local.php';
}

※コメントアウト : 文頭に # 記号をつけて命令文として認識させないようにする。削除と同じ行為だが、命令文として復帰させる場合に容易である。
※コメントを解除 : 文頭の # 記号を削除し、命令文として認識させる。

    ファイル編集(2)
---------------------------------

コピーした sites/default/settings.local.php をテキストエディタで開き、以下のコメントを解除し(2箇所)、キャッシュを無効化する。

    ▶settings.local.php 編集 (以下1行をコメントアウト 67行目辺り)
$settings['cache']['bins']['render'] = 'cache.backend.null';


    ▶settings.local.php 編集 (以下1行をコメントアウト 76行目あたり)
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';


    ファイル作成(2)
---------------------------------

/sites ディレクトリにある development.services.yml をsites/default にコピーする。

    ファイル編集(3)
---------------------------------

sites/default/development.services.yml をテキストエディタで開き、以下の内容を追加記述しTwigのデバッグ機能を有効にする。

    ▶以下の5行をファイル末尾に追加
parameters:
  twig.config:
    debug: true
    auto_reload: true
    cache: false

キャッシュ機能を無効にする方法は以上。

もし、上記の方法でキャッシュが無効にならない(デザインの変更がすぐに反映されない)場合、管理画面にある”すべてのキャッシュをクリアー”ボタンを使用する。変更するごとにボタンを押して少し待つため、非常に時間のロスになる。

筆者も、少しの記述ミスで作動しなかったため、作動しない場合に他のサイトも参考に正しく手順を踏まえたか再度確認する。

キャッシュを無効にした際に、Drupalにエラーや警告が発生した。
テーマ作成上に支障はなかったようだった。
再び、キャッシュを有効にした際に、エラーや警告は無くなった。
上記方法でキャッシュ無効にする際は、自己責任でお願いします。