CDNサーバで、意図しない古いコンテンツが配信されることがあります。今回は、これを避けるための設定を紹介します。
オリジンサーバ設定
CDNでキャッシュさせないためには、オリジンサーバのレスポンスに以下のようなHTTPヘッダを付けます。
- cache-control: no-store or private
- expires
TTL設定
CDNの設定でオブジェクトの生存時間(TTL)を設定できます。この値を小さくすることにより、古いオブジェクトが配信される可能性を減らせます。
APIによる削除
最近のCDNでは、キャッシュ削除用のAPIが提供されています。また、CMS用のプラグインも提供されいることが多くなっています。これらを使うことにより、CMSでコンテンツ更新を行ったときにCDN上のコンテンツ更新を行うことができます。
ただし、APIによるコンテンツ削除が完了するまでの時間は、CDNにより大きく異なります(リアルタイム~数十分)。頻繁に記事を更新するようなサイトの場合、CDNの選択が重要になります(短時間でオブジェクト削除できるCDNを選ぶ)。
Cash Busting
CDNによってはキャッシュの削除ができない場合があります。この場合、一般的にはTTLの短縮により対応します。
一方、Cash Bustingは、ファイル名にオブジェクトのバージョンを追記していくというテクニックです:
- ファイル名を直接変更
- image-1.png
- image-2.png
- 検索文字列の追加
- image.png?v=1
- image.png?v=2
CMSによっては、後者のアプローチをシステムとしてサポートするものものあります。