Cloudflare CDNでデフォルトのキャッシュビヘイビアを変更する方法(HTMLをキャッシュさせる)Page Rules
Cloudflare CDNではキャッシュの挙動をかなり細かく制御することが可能です。こちらにデフォルトの挙動がまとまっていますが、この挙動を変えたいときがあります。
例えば以下の様な場合です。
・デフォルトではHTMLはキャッシュしないがキャッシュさせたい
・特定のデバイスからのアクセスのみキャッシュを行わない
・特定のQuery Strigを含むリクエストはキャッシュを戻さずオリジンから常に最新を戻す
・特定の階層(/blogs等)はキャッシュさせない
このような動作をPages Rulesという機能で制御できます。デフォルトでキャッシュされるコンテンツは拡張子によって判断され以下の通りです。
この記事ではHTMLをキャッシュしてみます。
HTMLをキャッシュさせる方法
ブラウザがCDNにアクセスした際に、コンテンツがキャッシュされていたかどうかを知る一番簡単な方法はデベロッパーツールです。例えばChromeの場合以下のように表示されます。
Cf-Cache-Status:DYNAMIC
DYNAMIC
とはコンテンツがキャッシュ対象外でオリジンへ毎回取得に行くことを表します。似たような挙動を行うものとしてBYPASS
というものがありますが、これはリクエスト時のCache-Control header
がno-cache
,private
, max-age=0
にセットされたときの挙動です。
つまり、拡張子毎除外されるのがDYNAMIC
、リクエスト単位でヘッダーの指定により除外されるのがBYPASS
です。
ではHTMLをキャッシュさせるための設定変更を行います。マネージメントコンソール左ペインから、Rules
→Page Rules
をクリックします。
Create Page Rule
を押します。
挙動を変更させたいURLを指定します。
Cache Level
をCache Everything
にセットし、Save and Deploy Page Rule
を押します。
以下のようなルールができていれば完了です。
早速ブラウザからアクセスしてみます。
1回目のアクセスはMISS
になるはずですが、このタイミングでキャッシュがなされています。
2回目以降は以下の通りHIT
となります。
Discussion