これは何
herokuで運営しているサービスでCloudflareを使っている場合、デプロイ後にキャッシュをpurgeする必要がある場合は多いと思います。
キャッシュを削除したい際に、毎回手動でやるのではなく、APIを用いてheroku deploy時に自動でpurgeされるようにする方法を記事にしたものです。
削除APIを実行するためのシェルスクリプトを用意するスクリプトを用意する
はじめにCloudflareのAPIを用いた削除用のスクリプトを用意します。
トークンなどの発行方法は
が参考になると思います。
作成するシェルスクリプトは以下のようなものです。
curl -s -X DELETE "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \
-H "X-Auth-Email: ${EMAIL}" \
-H "X-Auth-Key: ${API_KEY}" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
今回は全てのキャッシュを削除する設定にしています。
特定のファイルのキャッシュのみ削除する場合は
を参照してスクリプトを変更してみてください。
herokuデプロイ時に作成したスクリプトを実行する
herokuではrelease phaseという機能を用いることで、デプロイ時に実行するコマンドを指定することができます。これを用いて作成したスクリプトをデプロイ時に実行するようにします。
release時に実行するコマンドはレポジトリのrootディレクトリにProcfileを配置し、そのProcfileを用いることで設定することができます。
release: bash purge.sh
これによって、herokuデプロイ時に自動でCloudflareのキャッシュをpurgeすることができるようになります。