キャッシュバスティングについて

2021年7月30日 at 9:08

Cache Buster というアドオンのページに、以下のような記載があります。

Hi! In case you run concrete5 8.4.4 or higher, there's little value in using this add-on.
In recent versions of concrete5, a cache buster is built-in!
http://marketplace.concretecms.com/marketplace/addons/cache-buster/

このアドオンは Concrete でキャッシュをクリアすると、読み込んでいる CSS などのファイル名の末尾にクエリ文字列としてタイムスタンプを都度付与してくれるようです。
CSS 更新のリリース時にブラウザのキャッシュが問題になることは多いので、現在の Concrete にそのような機能が備わっているならありがたいです。

テーマで使用している JavaScript や CSS は以下の要領にて読み込んでおりますが
http://concrete5.co.jp/blog/add-assets-to-concrete5-theme
アドオン導入前にページのソースを確認すると、確かにそれらしい文字列が付与されています。



しかし CSS ファイルを更新後、管理画面からキャッシュをクリアしてもクエリ文字列に変化はありません。
8.5.5 にキャッシュバスティングのような機能はあるのでしょうか。
その場合何か設定が必要でしょうか。

タグ:

Re: キャッシュバスティングについて

2021年7月30日 at 9:17
> しかし CSS ファイルを更新後、管理画面からキャッシュをクリアしてもクエリ文字列に変化はありません。

キャッシュクリアするたびにCSSのキャッシュ避けのパラメーターを変更するのは、一般的にはナンセンスです。なぜなら、通常の自力でCSSを書くのではなく、マーケットプレイスからテーマを購入している利用者の場合、運用している際に、CSSファイルが勝手に書き換わることはないからです。

通常の利用者にとって、CSSファイルが書き換わるのは、テーマを最新版に更新した時です。ですので、テーマのバージョンが変わった時、キャッシュよけのパラメーターも切り替わります。
 

Re: キャッシュバスティングについて

2021年7月30日 at 12:18
hishikawa様

ご回答ありがとうございます。
組み込まれているという機能について理解できました。

現在使用中のテーマは application/themes 以下にあります。
CSS 更新時にクエリ文字列を変更したい場合、テーマをパッケージ化した上でアップデートという手順が必須になりますでしょうか。
http://concrete5-japan.org/help/5-7/developer/designing-for-concrete5/packaging-your-theme/overview-and-full-screencast/
 

Re: キャッシュバスティングについて

2021年7月30日 at 12:25
application 内のテーマはバージョンを持ちませんので、アセットを登録する際にバージョン番号を明示的に指定してください。

Registering with Options 部分のサンプルコードを参考にしてください
http://documentation.concretecms.org/developers/assets/registering-an-asset
 

Re: キャッシュバスティングについて

2021年7月30日 at 18:10
hishikawa様

アセット登録部分に追記したバージョン番号に応じ、クエリ文字列が変更されることを確認できました。
サンプルご案内くださいましてありがとうございました。