AWS CloudFrontのコンソール上でディストリビューションのキャッシュ削除をする際にオブジェクトを指定してキャッシュ削除。
/index.html
/img/hoge.jpg
その後キャッシュ削除ステータスが「完了」となったがCDNにキャッシュされたままサイトが更新されない現象が発生。
前提
構成
・ドキュメントルート直下にindex.htmlを配置、画像などのリソースは/img/に配置
・https://example.com/ にリクエストしたら、index.htmlを表示させる構成
・ブラウザキャッシュはさせず、CloudFrontにキャッシュさせる
■更新したいファイル(=キャッシュ削除したいファイル)
・/index.html
・/img/hoge.jpg
解決
CloudFrontはクライアントからのリクエストパスでそのままキャッシュされる。
言い換えると/へのリクエストは/でキャッシュされ、/index.htmlは/index.htmlでキャッシュされる。
なので今回の場合、
/index.html
/img/hoge.jpg
でキャッシュ削除するのではなく
/
/img/hoge.jpg
でキャッシュ削除するのが正しかったようです。
サイトのファイル数とアクセス数が多く、極力オリジンへのリクエスト負荷を減らしたかったためオブジェクト指定でキャッシュ削除していました。
オリジンへの負荷を気にしなければ/*でキャッシュ削除で十分かもしれません。