category

Craft CMS の HTML Cache plugin を試してみる #craftcms

2019-04-26


HTML Cache プラグインを試してみる

HTML Cache
https://plugins.craftcms.com/h...

この辺のキャッシュは作成もそうだけど、消すところも気をつけないと辛い目に会うのでそこがどうなってるのかとか調べてみたいというところもあり。

テンプレートベースのキャッシュについてはこの辺で消せそうな気がする

trendyminds/buster: 🐰 A Craft CMS control panel utility to clear just the template-based caches
https://github.com/trendyminds...

キャッシュキーを指定して管理画面から消すみたいなことはできないものかな。。。。

これだとちょっと範囲が広いという気がするのだけど。

HTML Cache プラグインを導入してみる

とりあえずlighthouseでざっくりみてみる

導入前


導入後

0.4msくらいは短くなったかも。

体感的には早くなった。

更新されるかチェック

キャッシュされても更新が反映されないと意味がない

とりあえず、朝の 7:00 に予約投稿してあったものはキャッシュの有効期限内だったからか即反映されなかった。

更新されていない

記事のステータスは変わっている

header に Expires が設定されているわけではない様子。

とりあえずここまで。

消す処理をどうにかできないか?を調べてみる。

キャッシュの有効期限を短くする

今の設定は 3600s だけど、これは更新がなければ反映されないということなのかどうか?を試してみる。

とりあえず 180s に設定する。

13:00に公開予約したエントリーの表示確認

公開前

13:00の時点

13:01の時点

反映された

表示はちょっと遅くなったかな、、、、という気がするけど。

関係ないページはそこまで変わっていないかも

もう少しログとか?厳密に見る必要はあるかもしれないが。。。まぁ、このくらいなら、、、、という感じではある。

オプション的にはキャッシュを全部消す、しかないのでもう少し調べてみる。

パラメータがスルーされる

検索のところがパラメータ無視してキャッシュされているようなのでそこを調べる。

@tinybeans にURLの形式を search.html?q=hoge じゃなくて search/q/hoge みたいにすれば?というアドバイスをもらったのでそれを試す。

サクッとこういうアドバイスをもらえてありがたい。

ルーティングの設定で以下のようにする。

その上で検索フォームの処理をキーワード含めたURLに飛ばす感じにするので、以下のようにJS追記して処理する。

<script>
  $(function() {
    $('#searchForm').on('submit', function(e) {
      e.preventDefault();
      var q = $("#searchForm input[name='q']").val();
      location.href = "/search/q/" + q;
      return false;
    });
  });
</script>

期待した動作になって、これもキャッシュされてるっぽい。
JSも全然書けなくなってるなー。。。