AWS CloudFront, как обновить существующий файл S3? - PullRequest
0 голосов
/ 01 декабря 2018

Я использую CloudFront от AWS, и у меня есть статический веб-сайт S3.Я использую ReactJ и изменил некоторые тексты на большинстве страниц.Теперь у меня проблема в том, что я использую

npm run build

для создания производственного приложения.Я хочу обновить содержимое AWS в корзине S3 (ранее я загружал те же файлы), однако происходят две вещи:

- При доступе в режиме инкогнито все работает нормально, мне выдают обновленную версиювеб-сайт

-При доступе в обычном режиме через веб-браузеры, которые я использовал для доступа к веб-сайту ранее, мне по-прежнему предоставляется старая версия файлов.

Я получил доступ к Документация AWS и у меня есть два решения:

- Подождите 24 часа, пока CloudFront кэширует файлы в крайних местоположениях

- Используйте имя версии файлов (например, измените имяimage.jpg to image_1.jpg; image_2.jpg и т. д.)

Я бы определенно выбрал второй вариант, который действительно занимает много времени, но наверняка меньше 24 часов.Должен ли я изменить имя КАЖДОГО файла в сборке или только в статическом?

Какие-либо другие решения?

Что-то, что я не пробовал, перед загрузкой в ​​AWS S3 создатьпапку, такую ​​как V1 и загрузить мои файлы реакции.При внесении изменений я вызываю папку V2 и так далее.

1 Ответ

0 голосов
/ 02 декабря 2018

Использование имен версий - самый надежный метод.Это дает вам полный контроль над поведением кеша без возни с CloudFront.Так что да, каждый раз, когда появляется новая версия, обновляйте имена файлов.Кстати, если вы загрузили приложение «Реакция» с помощью команды «создать-реакция-приложение», то процесс сборки сделает это по умолчанию.Каждый пакет будет называться с уникальным хешем каждый раз, когда пакет меняется.Таким образом, вы можете использовать долгосрочный кеш в браузере и CF для ваших файлов.

Возможно, вам все равно придется аннулировать root index.html при каждом развертывании, поскольку его имя не меняется между версиями.

...