【Movable Type】 キャッシュ対策のパラメータを自動で付与する方法

Posted on
【Movable Type】 キャッシュ対策のパラメータを自動で付与する方法

サイトを更新した際にキャッシュの影響で変更が反映されてないということを避けるため、MTDateを使用してファイルのパスにパラメータを自動で付与する方法を紹介します。

キャッシュ対策のパラメータとは

ファイル名の末尾に「?hogehoge」というような文字列を付与して強制的にブラウザに別のファイルと認識させることでキャッシュの影響を受けないようにすることです。
付与する文字列は何でも構いませんが日付やバージョンを入れることが多いです。

・通常
<link rel="stylesheet" href="/css/common.css">

・キャッシュ対策のパラメータ付き
<link rel="stylesheet" href="/css/common.css?time=210522103045">

更新の際にこのようなパラメータを付与すればキャッシュの影響を受けずに更新できるのですが、更新の度に手動で文字列を更新するのは大変なのでMTタグを使用して自動化します。

MTDateを使ってパラメータを付与する

パラメータを自動で付与するには再構築した日時を表示することができるMTDateタグを使用します。

・MT
<link rel="stylesheet" href="/css/common.css?time=<mt:Date format="%y%m%d%H%M%S">">

・出力されるHTML
<link rel="stylesheet" href="/css/common.css?time=210522103045">

MTDateはformatモディファイアを付与することで出力時に表示する形式を設定することができます。
この例では21年5月22日10時30分45秒というように再構築した日時が秒単位まで入るようにしています。

モディファイア出力内容
%y年数を2桁の数字で表示します。1桁の場合は0が付加されます。
%m月を2桁の数字で表示します。1桁の場合は0が付加されます。
%d日付を2桁の数字で表示します。1桁の場合は0が付加されます。
%H時刻を24時間形式の2桁の数字で表示します。1桁の場合は0が付加されます。
%M分を2桁の数字で表示します。1桁の場合は0が付加されます。
%S秒を2桁の数字で表示します。1桁の場合は0が付加されます。

formatモディファイアで指定できる値は他にもあるので詳しくは公式のリファレンスを参照ください。

こうしておくことでMTを再構築するだけで自動でパラメータが入るのでブラウザのキャッシュの影響を受けずに更新することができます。
ここではcssを例にしていますが、もちろんjsやimgなど他のファイルでも同様にMTDateを指定すればOKです。

おしまい。