TL;DR
Cloudflare の Cache Rules を活用して、特定のパスを除外し、APIレスポンスのキャッシュ問題を解決しました。
発生した課題
自社の Web サービスでは、APIレスポンスがキャッシュされてしまい、古いデータがユーザーに返却されるというトラブルが発生しました。この問題はユーザーから問い合わせが殺到するほど深刻でした。原因調査の結果、Cloudflare のキャッシュ機能が原因であることがわかりました。キャッシュは通常、サイトのパフォーマンス向上に大きく寄与しますが、APIレスポンスの場合、最新のデータを返す必要があるため、キャッシュされるべきではありません。
原因調査
当初、Page Rules でキャッシュを制御しようとしましたが、ルールの数が上限に達してしまい、柔軟な設定ができなくなっていました。Page Rules は、簡単な設定でキャッシュを制御できる便利な機能ですが、複雑な条件を設定する必要がある場合は、Cache Rules の方が適しています。
解決方法
Cache Rules では、特定のパスを指定してキャッシュの挙動を制御できます。以下は、実際に設定したルールの概要です。
- ルールの作成: ダッシュボードの Cache Rules から新規ルールを作成します。
- パスの指定:
/api/*にマッチするルールを作成します。ワイルドカードの使用に注意が必要です。 - キャッシュ適格性の設定: キャッシュ適格性を「バイパス」に設定します。これにより、指定したパスはキャッシュされなくなります。
- 例外設定: 例外的にキャッシュしたいリソース(
manage-assetsなど)については、別途ルールを作成し、キャッシュを強化します。
導入時の注意点
Page Rules と Cache Rules を併用する場合、優先順位やルールの適用順序がややこしくなりがちです。また、ワイルドカードの書き方が Page Rules と微妙に異なる点に注意が必要です。ルールの設定前に、テスト環境での検証を十分に行い、意図した動作を確認することが重要です。
まとめ
Cloudflare の Cache Rules を使用することで、特定のパスをキャッシュから除外し、APIレスポンスの問題を解決することができました。Page Rules では制御しきれない複雑な条件でも、Cache Rules を活用することで柔軟なキャッシュ制御が可能です。ただし、ルールの設定には注意が必要です。