🔖

Cloudflare CDNでデフォルトのキャッシュビヘイビアを変更する方法(HTMLをキャッシュさせる)Page Rules

2023/08/19に公開

Cloudflare CDNではキャッシュの挙動をかなり細かく制御することが可能です。こちらにデフォルトの挙動がまとまっていますが、この挙動を変えたいときがあります。
例えば以下の様な場合です。
・デフォルトではHTMLはキャッシュしないがキャッシュさせたい
・特定のデバイスからのアクセスのみキャッシュを行わない
・特定のQuery Strigを含むリクエストはキャッシュを戻さずオリジンから常に最新を戻す
・特定の階層(/blogs等)はキャッシュさせない

このような動作をPages Rulesという機能で制御できます。デフォルトでキャッシュされるコンテンツは拡張子によって判断され以下の通りです。

この記事ではHTMLをキャッシュしてみます。

HTMLをキャッシュさせる方法

ブラウザがCDNにアクセスした際に、コンテンツがキャッシュされていたかどうかを知る一番簡単な方法はデベロッパーツールです。例えばChromeの場合以下のように表示されます。

Cf-Cache-Status:DYNAMIC

DYNAMICとはコンテンツがキャッシュ対象外でオリジンへ毎回取得に行くことを表します。似たような挙動を行うものとしてBYPASSというものがありますが、これはリクエスト時のCache-Control headerno-cache,private, max-age=0にセットされたときの挙動です。
つまり、拡張子毎除外されるのがDYNAMIC、リクエスト単位でヘッダーの指定により除外されるのがBYPASSです。

ではHTMLをキャッシュさせるための設定変更を行います。マネージメントコンソール左ペインから、RulesPage Rulesをクリックします。

Create Page Ruleを押します。

挙動を変更させたいURLを指定します。

Cache LevelCache Everythingにセットし、Save and Deploy Page Ruleを押します。

以下のようなルールができていれば完了です。

早速ブラウザからアクセスしてみます。
1回目のアクセスはMISSになるはずですが、このタイミングでキャッシュがなされています。
2回目以降は以下の通りHITとなります。

Discussion