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