26

サイトの現在の計画は、Amazon の Cloudfront サービスを、CSS、JavaScript、画像などのアセット ファイル、およびその他の静的ファイルの CDN として使用することです。

現在、これらすべての静的ファイルを含む 1 つのバケットが S3 にあります。ファイルは、その内容に応じて異なるフォルダーに分けられます。「スクリプト」は JS ファイル、「画像」は画像などです。

そのため、最初から気付いていなかったのは、バケットを S3 から Cloudfront ディストリビューションにデプロイすると、バケットに対するその後のすべての更新が同じディストリビューションに再度デプロイされないということでした。そのため、静的ファイルを更新するたびに、バケットを別の Cloudfront インスタンスに再デプロイする必要があるように見えます。

画像に変更があった場合は、新しい画像を作成するだけでよいことを簡単に確認できるため、画像の場合はこれで問題ありません。しかし、それを CSS や JS で行うのは困難です。

それでは、ベスト プラクティスの質問に進みます。

  1. 本番環境のデプロイごとに別の Cloudfront ディストリビューションを作成するのがベスト プラクティスですか? ここでの問題は、CNAME レコードで問題が発生することです。
  2. これらのファイルの性質と簡単に変更する必要があるため、Cloudfront に CSS と JS を格納しないのがベスト プラクティスですか? それがCDNの目的であるため、これに対する答えはNOのようです。
  3. 私が知らないCloudfrontの他の方法はありますか?
4

2 に答える 2

18

CloudFront に無効化リクエストを発行できます。

http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

ただし、S3 バケットの代わりに、独自のサーバーをカスタムオリジンとして使用します。への.htaccessエイリアスがあり、ファイルの変更時刻をHTMLに挿入します。CloudFront はまったく異なる URL を認識するため、新しいバージョンを取得します。style_*.cssstyle.cssstyle.css

(注: 一部の CDN ではクエリ文字列を介してこれを行うことができますが、CloudFront はキャッシュのためにすべてのクエリ文字列データを無視するため、.htaccess解決策です。)

編集: CloudFront は (オプションで) クエリ文字列を使用するように設定できるようになりました。

于 2011-07-14T17:48:08.307 に答える
8

CloudFrontは、キャッシュを無効にするために使用できるクエリ文字列のサポートを開始しました。 http://aws.typepad.com/aws/2012/05/amazon-cloudfront-support-for-dynamic-content.html

于 2012-06-05T05:20:26.177 に答える