0

アセットをAWS S3にプッシュし、CloudFrontを介してファイルを提供することで、シングルページアプリケーションのWebサイトを展開します。 this answerによれば、自分のドメインでSSLを使用してS3から直接ファイルを提供することはできないため、この方法でファイルを提供する場合はCloudFrontの使用について選択する必要はありません。AWS CloudFrontルートオブジェクトアップデートの待ち時間

再デプロイすると、新しいタイムスタンプ付きのルートHTMLファイル(それ自体が更新されたJSバンドルとCSSバンドルにリンクします)を生成し、それをS3にプッシュして、新しいファイルを新しいデフォルトルートオブジェクトにしますAWS経由のCloudFront配布用です。これにより、CloudFrontはすべてをキャッシュし、更新を隠すことができなくなります。

問題は、CloudFrontがルートオブジェクトを更新するのに時間がかかることがあることです。私がこれを書いているとき、私は、ヒット・プロダクションに重要な変化を待っているごとに、60秒ごとにリフレッシュ・リフレッシュを実行します。 CloudFrontは、Webコンソールを介して正しい(最新の)ルートオブジェクトを表示しますが、「Status:In Progress」も表示します。

時には、この遅延はほとんど目立たず、それ以外はかなり長いです。今日は1時間遅れに近づいています。私はこの問題を回避するにはどうすればよい

?私は、S3とCloudFrontを使用してこのデプロイメントメソッドを変更したり、このユースケースをよりよく処理することが知られている代替プラットフォームに切り替えることができます。

+0

ルートオブジェクトを変更した後、 '/'に対してキャッシュを無効にします。ルートオブジェクトを変更しても、キャッシュからの '/'に対するリクエストに対する古いレスポンスは削除されません。 –

+0

面白いマイケル、私はそれを試してみます。ありがとうございました! –

答えて

0

これは私がそれを解決した方法です。

クラウドフロントで0秒のキャッシング値を有効にします。 私はまた、ブラウザのキャッシュ文書が提供されていることに気付きました。

私は、オブジェクトの有効期限で、すべてのキャッシュにないオブジェクトを提供するためにS3バケットに

Cache-Control: no-cache, no-store, must-revalidate 
Pragma: no-cache 
Expires: 0 

ドキュメントをHTTPヘッダを追加する必要がありました:

あなたが長いにあなたのキャッシュを設定した場合

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html

CloudFrontからキャッシュを削除する場合は、ルートオブジェクトに対して無効化を実行できます。

希望します。

関連する問題