https://developers.cloudflare.com/api/operations/zone-purge
どうやら、Free, ProプランからはPurge All Cached Content
とPurge Cached Content by URL
しか使えないっぽい。
手元では少なくともディレクトリ単位での削除は動作しなかった。
つまり、
{"files": ["http://www.example.com"]}
としたとき、エッジキャッシュから削除されるのはhttp://www.example.com
のコンテンツだけであり、http://www.example.com/css/styles.css
は削除されない。
ここでややこしいのが、https://developers.cloudflare.com/cache/how-to/purge-cache/を見るとFree, Pro, Bussinessプランでもprefix削除できそうな気がするが、実際には単一のファイルを指定するか、ゾーン全体を消すしかないようだ。
Webコンソールから見ても、URL: Purges assets in the Cloudflare cache that match the URL(s) exactly
と書いてあるので、完全一致のものしか消せないのだと思う。自分はProプランだがURL
以外はグレーアウトしている。
まとめると以下のような対応付けだろうか?(間違っているかもしれない)
https://developers.cloudflare.com/api/operations/zone-purge#purge-all-cached-content | https://developers.cloudflare.com/cache/how-to/purge-cache/ | Supported Plan |
---|---|---|
Purge All Cached Content | Purge everything | Free, Pro, Bussiness |
Purge Cached Content by URL | Purge by single-file | Free, Pro, Bussiness |
Purge Cached Content by Tag, Host or Prefix | Purge cache by cache-tags | Enterprise |
Purge Cached Content by Tag, Host or Prefix | Purge cache by hostname | Enterprise |
Purge Cached Content by Tag, Host or Prefix | Purge cache by prefix(URL) | Enterprise |
とりあえず、Purge everythingの例を示す。
環境変数は.env
ファイルに入れる。
#!/bin/bash
set -euxo pipefail
source .env
curl "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \
--header "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
--header "Content-Type: application/json" \
--data '{"purge_everything": true}'
間違っていたら教えてください。