У меня есть приложение React, размещенное на ведре S3. Код минимизируется с помощью yarn build
(это приложение, основанное на создании приложения). Папка build
выглядит примерно так:
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
Я никогда не хочу, чтобы index.html
был кэширован, потому что, если я обновляю код (вызывая суффикс hex в main.*.js
для обновления), мне нужен следующий визит пользователя, чтобы выбрать изменение index.html
<script src>
index.html
чтобы указать на обновленный код.
В CloudFront я могу только исключить пути, и исключение "/" похоже не работает должным образом. Я получаю странное поведение, когда меняю код, и если я удалю обновление, я это вижу, но если я уйду из Chrome и вернусь, по какой-то причине я вижу очень устаревший код.
Я не хочу запускать недействительность для каждой версии кода (через CodeBuild). Есть ли другой способ? Я думаю, что одна из проблем заключается в том, что, поскольку это приложение использует React Router, мне нужно сделать некоторые обманчивые меры, установив документ с ошибкой в index.html
и заставляя HTTP-статус 200 вместо 403.