バックグラウンド
S3で静的サイトをホストしており、CloudFrontが上部にあります。私が抱えている問題は、HTMLファイルにあります。
CloudFrontのFAQによると:
Amazon CloudFrontはこれらのキャッシュ制御ヘッダーを使用して、そのファイルの更新バージョンのオリジンをチェックする必要がある頻度を決定します
これまでにやったこと
これを念頭に置いて、S3バケットにHTMLファイルを設定して、次のヘッダーを追加しました。
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
myへの最初の呼び出しでsamplefile.htm
、次の応答ヘッダーが表示されます(Content-Type
ポイントを維持するために、明らかなヘッダー(例:)を除外しました:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
ご覧のとおり、Cache-Control
ヘッダーがそこにあります。問題は、このファイルを更新して更新すると、キャッシュされたコンテンツ(最新のファイルではなく)を取得し、CloudFrontがキャッシュされたバージョンを提供していることが、応答ヘッダーを見ることでわかります。
X-Cache:Hit from cloudfront
要約/質問
上記を念頭に置いて、CloudFrontの使用時に最新のHTMLの自動取得を実現するにはどうすればよいですか?
FAQによれば、Cache-Controlヘッダーを使用してこれを行うことができますが、これを機能させることはできません。
以下の回答に従う
最終的に、S3バケットを直接指すようにwww CNAMEを変更することにしました。次に、CloudFrontを指す「static」という新しいCNAMEを追加しました。
これは、HTMLがS3から直接送信されることを意味し、S3はstatic.mydomain.comを指すすべてのCSS / JS / IMG参照を持ちます。