CDNトラブルシュート(キャッシュが古い)


CDNサーバで、意図しない古いコンテンツが配信されることがあります。今回は、これを避けるための設定を紹介します。

参考: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によっては、後者のアプローチをシステムとしてサポートするものものあります。