CDNのサムネイル

CDN

Cloudflareのキャッシュを操作する方法

公開日: 2020.9.21

Cloudflareのキャッシュを操作する方法まとめました。対象ファイルを広げたり、キャッシュ期間を設定したり、エッジサーバーのキャッシュを削除したりと、Cloudflareのキャッシュは使い込むとページ表示速度向上やサーバー負荷軽減をすることができます。

編集ノート:SERVERSUSでは、パートナーリンクからコミッションを得ています。コミッションが記事の意見や、サービスの評価に影響を与えることはありません。

キャッシュするファイルを調整する

デフォルトのキャッシュ設定

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の新着記事