課題
WordPressからWebhookを利用して記事の追加や更新を行った際、Vercelが再ビルドを実行していました。しかし、新規記事の追加は正常に行えるものの、既存記事の更新が反映されないという問題が発生しました。Vercelでの再ビルドは成功しているのに、更新が反映されない原因を解明する必要がありました。
仮説
更新が反映されない理由として、次の仮説が立てられました。
- 記事の追加は、まだVercel側にキャッシュが存在しないため、問題なく処理される。
- 一方で、記事の更新は既にキャッシュに保存されているデータを参照しているため、再ビルド時にキャッシュから情報が引き出され、変更が反映されない可能性がある。
このため、再ビルドの際にキャッシュを消去すれば、更新も正常に反映されるはずだと考えました。
解決策
仮説に基づき、Vercelのビルド時にキャッシュを消去する設定を追加することにしました。
1. ビルドスクリプトのカスタマイズ
Vercelは、デプロイ時に package.json
の scripts.build
セクションに記載されたコマンドを実行します。デフォルトでは next build
コマンドが使われますが、これではキャッシュがそのまま残ります。
そこで、キャッシュを削除してからビルドするために、以下のように package.json
の build
スクリプトを変更しました。
"scripts": {
"build": "rm -rf .next && next build"
}
2. キャッシュ削除の効果
この変更により、Vercelは再ビルドのたびに .next
フォルダ(ビルドキャッシュが保存される場所)を削除し、その後クリーンな状態で next build
を実行します。これにより、キャッシュされた古いデータではなく、最新のWordPressの記事内容を基にしたビルドが行われるようになります。
結果
この対応を行った結果、Vercelでの再ビルド時に新規記事の追加と更新の両方が正しく反映されるようになりました。キャッシュの削除が機能したことで、更新がスムーズに行われ、WordPressからのWebhook経由での記事管理も効率的に動作するようになりました。
まとめ
WordPressからのWebhookを使ったVercelでの自動ビルドでは、キャッシュが問題となる場合があります。特に、記事の更新が反映されない場合は、キャッシュが原因で古い情報がビルド時に使われている可能性が高いです。package.json
のビルドスクリプトにキャッシュ削除コマンドを追加することで、こうした問題を解決し、正しく更新を反映させることができます。