Craft CMS のキャッシュ周りがよくわからなかったのでメモ

公式ドキュメント
https://craftcms.com/docs/templating/cache

{% cache %}
    {% for block in entry.myMatrixField %}
        <p>{{ block.text }}</p>
    {% endfor %}
{% endcache %}

キャッシュの削除

管理画面からキャッシュの削除ができる

https://craftcms.com/classreference/tools/ClearCachesTool

  • 全て
    • 全てのキャッシュを削除
  • データキャッシュ(Data caches)

  • RSSキャッシュ(RSS caches)

  • アセットキャッシュ(Asset caches)

  • コンパイル済のテンプレート(Compiled templates)

  • 一時的なファイル(Temp files)

  • アセット変換インデックス(Asset transform index)

  • アセットのインデックス化データ(Asset indexing data)

  • テンプレートキャッシュ(Template caches)

キャッシュの設定

山本さんに教えてもらった効率がよいという方法

処理時間のかかるループ処理などのブロックごとにcacheタグで囲む
それぞれ {% cache using key "<cachekey>" %} の形式でキーを指定する
同一のキーでも、呼び出されるURLが異なればキャッシュは区別される

キャッシュキーがあればそのキャッシュだけを削除しやすいみたい

cacheDuration

https://craftcms.com/docs/config-settings#cacheDuration

テンプレートで

{% cache %}

で囲われているところはキャッシュされる。

初期値は 'P1D' (1日)。

'cacheDuration' => 'P1W',

cacheElementQueries

https://craftcms.com/docs/config-settings#cacheElementQueries

デフォルトではエントリ更新時にテンプレートキャッシュ削除されるが、それを無効にする設定。初期値は 'true' 。

'cacheElementQueries' => false,

更新が多いがアクセスも多い場合は、 'false' にしたうえでキャッシュをコントロールしたほうが良さそう。


キャッシュ削除をcronジョブと連携できそう??
https://github.com/themccallister/craft.cache-clear