2012-10-08 7 views
9

私はドキュメントで明白な答えを見ることができないようです。Amazon S3はCloudFrontに無効化信号を送信しますか?

S3でファイルを更新してCloudFrontを有効にすると、S3はCloudFrontに無効化信号を送信しますか?または、ファイルを更新した後に自分自身で送信する必要がありますか?

答えて

17

S3はCloudFrontに無効化情報を送信しません。デフォルトでは、CloudFrontは、原点からデータを取得したときに設定されたキャッシュコントロールヘッダーで指定された最大時間まで情報を保持します。

キャッシュエントリを無効にするには、無効化バッチを作成します。これはあなたにお金をかけるでしょう:月に1000回のリクエストは無料ですが、1リクエストにつき0.005ドル必要です.1000ファイルを無効にした場合、ワイルドカード機能を使用できない限り、月額150ドルの費用がかかります。もちろん、Amazon Lambda関数を使用するs3イベントに応答してこれをトリガすることができます。

もう1つの方法は、オブジェクトが変更されたときに(実際には世代別キャッシュキー)異なるパスを使用する方法です。同様に、URLにクエリパラメータを追加して、クラウドフロントに新しいコピーを取得させたいときにそのクエリパラメータを変更することができます(これを行うには、クエリ文字列パラメータを使用するようCloudFrontに指示する必要があります。

まれにしか(しかし大きな)変更を行わない場合の別の方法は、単に新しいクラウドフロントディストリビューションを作成することです。

+0

私はこれが本当に大変だったと感じました。彼らは機能を見逃したようだ。あなたはそれについてのリファレンスを提供できますか、それとも指定されていませんか?ありがとう。 – Joe

+0

新しいバージョンをS3にアップロードするということは、CloudFrontでキャッシュをクリアすることを意味するという誤った仮定です。はい、これはあなたが探している振る舞いかもしれませんが、あなたが望むのはAWSの予想通りです。多くの場合、私は自分の設定に従って期限が切れることを知ってCloudFrontにコンテンツをキャッシュし、事前にS3で更新されたコンテンツをステージングします。私の場合、自動無効化は私が望むものの反対です。 –

+0

しかし、それは有益なパラメータのように思えます。 – Joe

3

私が知る限り、すべてのCDNはこのように動作します。

これは、一般に、foo-x.y.z.extのようなものをCDNのアセットのバージョンに使用する理由です。 ?QUERY_STRINGで特定のブラウザやプロキシにアセットをキャッシュしないことがあるため、foo.ext?x.y.zは使用しません。

一般的に、あなたはこれをチェックすることもできます。これは、ベストプラクティスの多くが含まれており、何をすべきかについて、どのようにそれが動作に入る https://developers.google.com/speed/docs/best-practices/caching

S3とCloudfrontに関しては、私はキャッシュの無効化に精通していませんが、Frederick Cheungが言及したものはすべて正しいです。

プロバイダによっては、キャッシュを直接クリアすることもできますが、CDNの性質上、これらの変更はほとんど決して瞬時に行われません。別の方法は、資産がより頻繁にリフレッシュされるように、より小さいTTL(有効期限ヘッダー)を設定することです。しかし、私はそれがCDNの目的をも破ると思う。

私たちのケース(エッジキャスト)では、キャッシュ無効化(手動処理)と無料で行うことができますが、これに応じて資産をバージョンアップすることはほとんどありません。

+0

お返事ありがとうございます。私はS3とCloudFront(と他のもの)の両方に精通しています。私はこれらの2つのAmazon製品の具体的な統合について質問していました。 – Joe

+0

OK、私は特にそれを得ていませんでした。だから、私のお勧めは、資産をバージョンアップし、オブジェクトに 'Cache-Control'ヘッダを設定することです。 – Till

+0

私はちょうどそれを回避する必要があるように見えます。私はまだそれが欠けていることは不可欠で、実装が簡単な機能だと思っています。 – Joe

関連する問題