APIを利用してキャッシュ削除(パージ)する方法
オリジンサーバーのコンテンツを更新した場合でも、CDNに設定されたキャッシュ時間が経過するまでは古いコンテンツが配信されます。
CDNに新しいコンテンツをオリジンサーバーから取得させたい場合、キャッシュを削除します。この処理をパージと言います。
ここでは、APIを利用してキャッシュを削除(以降パージと表記)する方法をご紹介します。
目次
1. パージの種類
挙動の異なる2種類のパージを実行可能です。
| パージ | 処理の挙動 | アクセス時の挙動 |
|---|---|---|
| instant purge | キャッシュを強制的に削除します。 | オリジンからコンテンツを取得します。 |
| soft purge | キャッシュを「期限切れ」状態にします。 | オリジンに更新の有無を問い合わせて更新があれば再取得(更新がなければキャッシュ上のコンテンツを再利用)します。 |
上記以外のパージ種類についてはこちらをご確認ください。
2. サービスIDの取得方法 *
*サービスID・APIキーの取得方法はこちらのページにも詳細を記載しています。
CDNのサービスを作成いただくと、CDNの一覧にサービスが表示されます。
新規サービスの作成については、ご利用ガイド「CDNの利用方法:新規サービスの作成」で確認できます。

サービス名をクリックします。

次のようにポップアップが表示されますので、こちらでサービスIDを確認します。

こちらが、CDNのサービスIDとなります。 CDNの設定画面の基本設定のIDを確認します。
3. API KEYの取得方法
APIをリクエストする際に必要となるAPI KEYは下記の手順にて確認します。

1-1.CDNサービスをご利用の場合
メニューから「API」をクリックします。

1-2.他のIDCFサービスをご利用の場合(参考)

メニューから「API」または「申し込み情報」をクリックします。次の画面に遷移後、改めて「連携アカウント」をクリックします。

2.連携アカウントのFastly
Fastlyのタブをクリック後、下記の画面からAPI KEYの取得ができます。

API KEYは秘密鍵になりますので大切に保管してください。
4. API呼び出し例
下記のようなコマンドにて様々なAPIが活用できます。
消したいキャッシュのURLに対してPURGEメソッドをリクエスト(認証不要)
実際の設定例
$ curl -X PURGE http://www.example.com/image.jpg
実行結果例
{ "status": "ok", "id": "11959-1620304722-176045" }
※ソフトパージの場合は -H "Fastly-Soft-Purge:1" を追加
サロゲートキー(キャッシュキー)で指定
実際の設定例
$ curl -X POST https://cdn.idcfcloud.com/api/v1/service/(SERVICE_ID)/purge \
-d '{"surrogate_keys":["/foo/index.html", "/bar/*", "/*.jpg"]}' \
-H "X-IDCF-CDN-APIKEY: (API_KEY)" \
-H "Accept: application/json"
実行結果例
{ "\/foo\/index.html": "11936-1620242967-510762", "\/bar\/*": "11936-1620242967-510763", "\/*.jpg": "11936-1620242967-510763" }
※ソフトパージの場合は -H "Fastly-Soft-Purge:1" を追加
全キャッシュ削除
実際の設定例
$ curl -X PURGE http://www.example.com/image.jpg
実行結果例
{ "status": "ok", "id": "11959-1620304722-176045" }
5. URL指定のパージ処理に認証をかける方法
URL指定のパージ処理に認証をかける方法をご紹介します。
設定方法
vcl_recv に下記VCLを追加します。
if( req.request == "FASTLYPURGE" ) {
# Header rewrite Fastly Purge : 10
set req.http.Fastly-Purge-Requires-Auth = "1";
}
パージ方法
上記VCLによりPURGEメソッドは拒否されるようになるので、パージしたい場合はAPI KEYを添えてPOSTメソッドで呼び出します。
実際の設定例
$ curl -X POST \
https://cdn.idcfcloud.com/api/v1/service/3eVLUhRFQlxS6BTHEVBEdr/purge/https://xxxxxxxxx.cdn.jp.idcfcloud.com/img/example.jpg
\
-H "X-IDCF-CDN-APIKEY: xXxxXXxxxXXxxxXXxxXxx"
実行結果例
{"status":"ok","id":"99999-9999999999-99999999"}
以上でご説明は完了です。CDNに関するその他情報はこちらで確認できます。