Craft CMS のテンプレートキャッシュを定期的に削除する

Craft CMS のテンプレートキャッシュを定期的に削除するための簡単なシェルスクリプトをご紹介します。

Craft CMS Logo

Craft CMS では、テンプレート内でキャッシュさせたい場所を {% cache %} ... {% endcache %} タグで囲むと、その部分の出力結果をキャッシュしてくれて、2回目以降のアクセスは高速で出力してくれます。

また、{% cache %} タグには有効期間はスコープも指定することもできますし、そのキャッシュ内のエントリが更新された場合は、自動的にそのキャッシュを削除してくれますので、とても便利です。詳しくは下記のドキュメント参照してください。

さて、今回は、このキャッシュを craft コマンドを使って意図的に削除する方法をご紹介します。

シェルスクリプトで実装

craft コマンドには、いくつかのオプションがありますが、今回はその中でテンプレートのキャッシュに関係するものを抜き出しています(ついでに管理画面のキャッシュもクリアしておきます)。

#!/bin/sh

/path-to-craftcms/craft clear-caches/compiled-templates --interactive=0
/path-to-craftcms/craft clear-caches/cp-resources --interactive=0
/path-to-craftcms/craft clear-caches/data --interactive=0
/path-to-craftcms/craft clear-caches/temp-files --interactive=0
/path-to-craftcms/craft clear-caches/template-caches --interactive=0

#もしアクセスの多いトップページについて、最新の状態でキャッシュさせたい場合は、
#下記のようにしてコマンドでリクエストしてキャッシュを新たに生成するのもありだと思います。
curl --silent --compressed "https://tinybeans.net"

exit

これを、cron で定期実行するなどしたら良いとかもしれません。なお、余談ですが、bit part ではこういった定期実行の処理が終わったら Slack に通知するようにしています。

以上です。

Published 2019-10-18
Updated 2019-10-18