S3バケットにホストされているReactアプリがあります。コードはyarn build
(これは作成反応型アプリベースのアプリ)を使用して縮小されています。私は(更新するmain.*.js
に六角サフィックスを引き起こす)コードを更新した場合、私が上で拾うために、ユーザの次の訪問を必要とするので、私は、index.html
がキャッシュされたくないS3バケットでCloudFrontキャッシュindex.htmlを作成する方法
build
├── asset-manifest.json
├── favicon.ico
├── images
│ ├── map-background.png
│ └── robot-icon.svg
├── index.html
├── js
│ ├── fontawesome.js
│ ├── packs
│ │ ├── brands.js
│ │ ├── light.js
│ │ ├── regular.js
│ │ └── solid.js
│ └── README.md
├── service-worker.js
└── static
├── css
│ ├── main.bf27c1d9.css
│ └── main.bf27c1d9.css.map
└── js
├── main.8d11d7ab.js
└── main.8d11d7ab.js.map
:build
フォルダには、何かのように見えます<script src>
index.html
が更新されたコードを指すように変更されました。
CloudFrontでは、パスを除外しているように見えますが、「/」を除いても正しく動作していないようです。コードを変更したところで奇妙な動作が発生しています。リフレッシュすると表示されますが、Chromeを終了して元に戻った場合、何らかの理由で古いコードが表示されます。
(CodeBuildを介して)すべてのコードリリースで無効化をトリガーする必要はありません。別の方法がありますか?私は挑戦の1つは、React Routerを使用するアプリなので、エラー文書をindex.html
に設定して、403の代わりにHTTPステータス200を強制することでトリッキーな作業をしなければならないと思います。
S3オブジェクトのメタデータにそのヘッダーを追加することについて話していますか? URLパスに関係なく、index.htmlをキャッシュすることは決してありません。私は、関連するファイル(JSファイル、CSS、イメージ)のキャッシュについてもっと心配しています。 – ffxsam
はい:これはAWSドキュメントの「システム定義のメタデータ」と呼ばれています:http://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-metadata.html –
素晴らしい役に立った!インデックスファイルをコピーするときに 'aws s3 cp --cache-control max-age = 0'を使用するように私の展開プロセスを設定しました。魅力のように動作します。 – ffxsam