Cloudflareのキャッシュを操作する方法
Cloudflareのキャッシュを操作する方法まとめました。対象ファイルを広げたり、キャッシュ期間を設定したり、エッジサーバーのキャッシュを削除したりと、Cloudflareのキャッシュは使い込むとページ表示速度向上やサーバー負荷軽減をすることができます。
キャッシュするファイルを調整する
デフォルトのキャッシュ設定
Cloudflareでは、キャッシュするファイルの種類が予め規定されています。
jpgなどの画像ファイルやcssファイル、jsファイルなどの静的ファイルはProxyしていれば自動でキャッシュされますが、htmlやjsonなどのWebドキュメント系ファイルは基本的にはキャッシュされません。
デフォルトで除外されているファイルをキャッシュする方法
これらの規定のキャッシュ対象ファイル以外をキャッシュするには、Page Ruleで「Cache Everything」を設定します。
Cache Everythingは、言葉の通り「全てをキャッシュする」という設定ですが、適用するルートを設定できるので、「/*.json」としてjsonファイルだけを対象にすることもできますし、「/cdn.exmaple.com/*」としてドメイン単位でキャシュさせることもできます。
サイトによって何をどうやってキャッシュするかはそれぞれですが、Cloudflareで画像やcssファイル以外のファイルをキャッシュするのであれば、キャッシュさせるファイルのURL構造にも気をつけましょう。
キャッシュ時間を調整する
Cloudflareがエッジサーバーにキャッシュを保持する時間は、基本的には「オリジンWebサーバーからのキャッシュヘッダーと同じ」になります。
キャッシュヘッダが3600s(1時間)であれば、Cloudflareはエッジサーバーが最初にキャッシュした時刻から1時間後に最初にアクセスされたリクエストについて、オリジンサーバーにファイルを取得しに行きます。
基本的には、オリジンサーバー側のキャッシュヘッダーで操作するのがベストです。もし、オリジンサーバー側のキャッシュヘッダが変更できないのであれば、Cloudflareのドメインごとの「ブラウザ キャッシュ TTL」を変更するか、Page Ruleで設定可能です。
静的ファイル以外のキャッシュ調整
静的ファイル以外のファイルをキャッシュする場合は、時間を調整がポイントになります。
HTMLファイルなどのドキュメントファイルは、ブラウザのキャッシュTTLは0がベストですが、CloudflareのCDNでキャッシュする場合、
- 更新されるまでなるべく長くエッジサーバーでキャッシュする
- 更新されたらエッジサーバーのキャッシュを更新する
というのがベストです。
そのためには、ブラウザのTTLは0のままにして、CloudflareのPage RuleでエッジキャッシュのTTLだけを長くすると、上記に近い挙動になります。ただし、エッジキャッシュのTTLは最長1ヶ月になります。
もし、長い間更新していないアーカイブサイトなのであれば、CloudflareのエッジキャッシュTTLを変更するよりも、ブラウザキャッシュを1年などの長い期間にした方が良いでしょう。
キャッシュファイルを削除する
Cloudflareのキャッシュは一度キャッシュすると、「オリジンWebサーバーからのキャッシュヘッダーの期間」の間は、エッジサーバーのキャッシュを返します。
いくらオリジンサーバーで新しい更新があったとしても、ProxyしているCloudflareがオリジンサーバーにリクエストを飛ばす前に、キャッシュからレスポンスを返してしまうので、「いくら経ってもファイルが更新されない」という、いわゆる「Cloudflareのキャッシュが消えない・更新されない」問題が発生します。
Cloudflareのキャッシュを削除するなら、管理画面かAPIからキャッシュ削除をします。
簡易画面の場合は、ドメインページの「Caching」 > 構成 > キャッシュをパージ」から削除できます。APIは、
https://api.cloudflare.com/client/v4/zones/ゾーンID/purge_cache
へのDELETEリクエストで削除可能です。
削除は、
- 個別ファイル削除
- 全体削除
の2つしかありません。削除するファイルが1〜10数個であれば個別ファイル削除で問題ありませんが、対象ファイルが数百であったり、対象ファイルが詳細にわからない場合は全体削除になります。
全体削除の場合は、各ファイルの最初のリクエストは全て「非キャッシュリクエスト」になるので、キャッシュ比率が落ちてサーバーへの負荷が増えます。
Cloudflareのキャッシュを操作する方法を見てきました。
初期設定でもよしなにキャッシュしてくれるCloudflareですが、各種設定やPage Ruleを使いことでより詳細なキャッシュコントロールが可能です。
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
CDNの新着記事
- CDN無料で使えるCloudflare Zero Trustでノープログラムでアクセス制限を実装する 2022.4.27
- CDNCloudflareでLets Encryptの更新エラーに対応する 2020.11.16
- CDNエッジが大事!HTTP3.0時代のCDNの活用方法 2020.11.9
- CDNCloudflareのキャッシュについて理解する 2020.9.17
- CDNCloudflareで静的サイトをキャッシュする時のベストプラクティス 2020.9.2
- CDNCloudflareを使ってwwwあり・なしURLを正規化する方法 2020.8.25
- CDNCloudflare Registrarで登録できるドメイン一覧と更新料金 2020.5.25
- CDNSSLの使えないサーバーでHTTPS配信をする裏技 2020.1.20