GatsbyをWebhookからビルドする際に、自動でキャッシュをクリアする

GatsbyをWebhookからビルドする際に、自動でキャッシュをクリアする

2021.12.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ベルリンオフィスの小西です。

Gatsby CloudはWebhookによるビルドをサポートしていますが、ビルドを高速化する仕組みとの兼ね合いで、思った通りの挙動をしないことがあります。

Gatsby Cloudのビルド時にキャッシュが残る

Gatsby Cloudによるビルドでは、キャッシュを使ってビルド処理の高速化を行っています。

時折問題となるのが、詳細ページは更新されたけど、一覧ページが更新されないというようなケースです。

解決策: POSTリクエストにヘッダーを追加する

Webhookによるビルドでは、Gatsbyのダッシュボードで発行されるエンドポイント(例: https://webhook.gatsbyjs.com/hooks/data_source/publish/45fw23eb-ac26-4dg0-8511-4a682ac8ff92)にPOSTリクエストを投げますが、下記の変更を行うことで、リクエスト時に自動でキャッシュをクリアしてからビルドを行うことが可能です。

  • Webhookを叩くPOSTリクエストで、ヘッダーを指定する: 'x-cache': 'false'

Contentfulでの設定例

例えば、Contentfulと連携している場合は、下記の画面から設定可能です。

ダッシュボード > Settings > Webhooks

gatsby dashboard

Preview Buildsでも利用可能

Gatsbyのプレビュービルドでもほぼ同様の設定でキャッシュを消してビルドできるようになりました。

上記で紹介した設定に加え、リクエストヘッダーに下記を付与します。

‘x-runner-type’: ‘PREVIEW’

注意: Cloud Builds 機能をフル活用できないかも

Gatsbyには Cloud Builds というビルドを高速化するオプションがあります(ビルド時に毎回初期化しなくなる)。

この機能は前回ビルド時からのキャッシュを使うため、この記事で紹介した毎回のビルド時のキャッシュクリアを行う場合、Cloud Buildsのメリットを最大限活かせなくなる可能性がある、とのことでした。

参考


「AI×SaaSで加速するWeb制作」ウェビナー開催

60分でわかる、Contentful・Cloudinary・v0・Vercelの連携によるWeb制作ワークフロー。
アイデアを即座に形にする 新しい仕組みを 豊富な実践デモ を交えながら解説します。開発のスピードアップ、リソース最適化、コスト削減を実現したい方は必見です。

AI×SaaSで加速するWeb制作ウェビナー

とりあえず申し込む



SaaS導入支援はクラスメソッドに!

クラスメソッドでは Contentful・Cloudinary・v0・Vercel など各種SaaS製品 の導入支援もしております。
具体的に課題をお知らせいただければ、適した商材のご提案も可能です。製品の詳細や支援の内容についてお気軽にお問い合わせください。

クラスメソッドに相談する

この記事をシェアする

関連記事