Cloudflareは、CDN(コンテンツデリバリーネットワーク)やWAF(Webアプリケーションファイアウォール)、DDoS対策などを提供するクラウドサービスです。
Web サイトのパフォーマンスを向上させるために Cloudflare を活用している場合、適切なタイミングでキャッシュをパージすることが重要です。
本記事では、Cloudflare API を使用してキャッシュを削除する方法を詳しく解説します。

APIでキャッシュパージする方法

1.APIキーの取得

APIを使うには、Cloudflareの「APIトークン」が必要です。
Cloudflare ダッシュボードにログイン後、右上のプロファイルを開き以下をクリックしてください。

ユーザーAPIトークンからトークンの作成をクリックします。

ページを下までスクロールし、カスタムトークンを作成する欄の始めるをクリックします。

カスタムトークンの設定は下記の通り設定します。

・トークン名:任意で名前を設定
・権限:ゾーン、キャッシュパージ、パージに設定
・ゾーンリスト:ドメイン指定がある場合に設定

設定後、下部の「概要に進む」をクリックしてトークンを作成してください。

以下の画面が表示されたら成功です。

2.キャッシュパージのAPIリクエスト

curlコマンドでAPIリクエストを送りパージを実行する方法を例示します。

①ドメイン全体のキャッシュをパージする場合

curl -X POST "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'

・YOUR_API_TOKENは、保管したAPIトークンになります。

・YOUR_ZONE_ID(ゾーンID)は、Cloudflareのダッシュボード概要の画面の右メニューの下に表示されています。

②特定のURLだけキャッシュパージする場合
※特定のURLだけキャッシュをクリアするので負荷を最小限にできます。

curl -X POST "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"files":["https://example.com/image.jpg", "https://example.com/style.css"]}

実行対象のパスは任意で変更してください。

③ディレクトリ単位で指定してパージする場合
※Enterpriseプランのみ可

curl -X POST "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"files":["https://example.com/images/*"]}'

“https://example.com/images/” のように ワイルドカードを使うと、ディレクトリ以下の全キャッシュを削除します。

3.APIのレスポンス確認

成功すると、以下のようなレスポンスが返ってきます。

{
"result": {
"id": "some-unique-id"
 },
  "success": true, 
  "errors": [], 
  "messages": []
}

success: true なら、キャッシュパージが成功です。

success: true にならない場合(エラーが発生する場合)、APIのリクエストが正しく処理されなかったことを意味します。失敗の場合、APIのトークンが間違っている、ゾーンIDが間違っている、コマンドの入力ミスなどがあり得ますので、ご確認ください。

Web表示スピード改善・セキュリティ対策のCloudflare

導入に関するご相談だけでなく、運用についてもお気軽にご相談ください。
DDoS攻撃対策を早急に行いたい方、WAFなどのセキュリティ機能やプランの詳細を知りたい方、
国内エンジニアによる運用サポートをご希望の方も、ぜひお問い合わせください。