Проблема с кэшированием в AWS CloudFront - PullRequest
0 голосов
/ 21 января 2019

Я использую AWS CloudFront, связанный с корзиной S3, для размещения статического (React) веб-сайта.Кажется, все работает нормально, за исключением случаев, когда я загружаю измененные файлы в корзину.Я знаю, что по своей конструкции CloudFront будет кешировать файлы, и вам придется сделать недействительными измененные файлы, чтобы CloudFront подхватил новые изменения как можно скорее.Однако всякий раз, когда я просматриваю веб-сайт (на разных устройствах), я все равно получаю более старые версии файлов.Иногда я вижу последние версии веб-страницы, но потом, когда я просматриваю ту же страницу, она получает старую версию (даже после очистки кеша или просмотра в Incognito) ?!Очень странно.

У меня есть несколько вопросов относительно моей настройки:

  • Я связываюсь с CloudFront с S3, используя имя хоста конечной точки S3, а не просто выбираю сегмент из списка, так как я обнаружил, чтоAWS неверно истолковал мой сайт как сервис REST (он ожидал XML), и я нашел статью о SO, в которой говорится, что мне нужно связать полное имя .Это нормально, и может ли это вызывать странные проблемы с кэшированием?
  • Я делаю файлы недействительными, используя / *.Я не могу подтвердить, работает ли это, поскольку CloudFront не будет вдаваться в подробности о том, какие файлы были признаны недействительными.Будет ли / * делать недействительными все подпапки в корзине или только файлы в корне?
  • Влияет ли добавление значения контроля кэша на все файлы, влияют ли на недействительность?
  • Поможет ли мне регистрация в CloudFront?странные проблемы, с которыми я сталкиваюсь?

Буду признателен за некоторые отзывы об этом, поскольку я новичок в AWS, и в нем так много настраиваемых элементов, что порой кажется пугающим!

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Да, на самом деле кэширование убивает, но в AWS у вас есть решение для этого ...

1. AWS Cloud front
2. In that Click the ID you want
3. You can able to see the Invalidations tab, click that
4. Then Create Invalidation
5. Enter -> /*   and click Invalidate 

После завершения проверки вы сможете увидеть свои последние изменения

0 голосов
/ 21 января 2019

Влияет ли добавление значения контроля кэша на все файлы на аннулирование?

Да, это ваша проблема.

Если вы добавляете контроль кэша для файлов, они кэшируются на клиенте (браузере), и аннулирование в Cloudfront не удалит эти файлы из кэша клиента.

У вас есть несколько вариантов:

  • Не добавлять контроль кеша для файлов (BAD - замедляет время загрузки страницы)
  • Установить контроль кэша для файлов на более короткий промежуток времени (LESS BAD - замедляет время загрузки страницы после истечения срока действия кэша)
  • Очистить кеш браузера для вашего сайта (НЕ БОЛЬШОЙ - ваши пользователи все еще могут видеть старый контент)
  • Полностью отключить кеш для вашего браузера (НЕ ТАК ХОРОШО - тормозит практически на каждом сайте)
  • Удалите одну страницу React и перейдите в приложение React на стороне сервера (SSR) (ЛУЧШАЯ СТАВКА, но много работы. Хотя оно того стоит)
...