Ожидаемое поведение при кэшировании, когда 2 попадания по одному и тому же пути в CloudFront - PullRequest
0 голосов
/ 27 октября 2019

Итак, допустим, у меня есть дистрибутив CloudFront, и вскоре после этого я звоню /path1, а затем /path1. Поток будет

  • 1-й запрос является пропуском CloudFront и отправляется на сервер
  • 2-й запрос является попаданием CloudFront

Но что, если 2 параллельныепопадает в CloudFront. В то же время, когда 2-й запрос достигает CloudFront до завершения 1-го запроса, такой, что CloudFront еще не имеет кэшированного ответа. Будет ли он ждать 1-й запрос, чтобы закончить и вернуть это? Или оба запроса попадут на сервер?


При просмотре моих журналов NGINX, похоже, что когда параллельные вызовы достигают сервера, все они достигают сервера. Есть ли способ избежать этого? Например, если мошеннический клиент делает слишком много запросов на один и тот же путь, я подумал, что CloudFront может сделать только 1 запрос на сервер и вернуть тот же ответ. Это возможно?

1 Ответ

1 голос
/ 27 октября 2019

Если первый запрос все еще обслуживается клиенту, CloudFront еще не кэшировал его, один первый запрос завершен, что означает, что CloudFront получил полные данные из Origin и передал их клиенту, он сохраняет ответ в кешеи обслуживал дальнейшие запросы.

Если вы делаете второй запрос до того, как первый запрос будет завершен, он будет MISS из облачного фронта, и вы увидите, как оба запроса достигли CloudFront.

Однако, если выГоворя о пакете параллельных запросов, CloudFront предлагает способ их обработки:

Одновременные запросы для одного и того же объекта

"Когда пограничное местоположение CloudFront получает запрос наобъект и либо объект в данный момент не находится в кэше, либо срок действия объекта истек, CloudFront немедленно отправляет запрос вашему источнику.Если есть всплеск трафика - если дополнительные запросы для того же объекта приходят в крайнее местоположение до того, как ваш источник отвечает напервый запрос - CloudFront делает короткую паузу перед отправкой дополнительных запросов на объект вашему источнику. Как правило, ответ на первый запрос поступает в пограничное местоположение CloudFront до ответа на последующие запросы. Эта короткая пауза помогает уменьшить ненужную нагрузку на вашпроисхождение сервере. Если дополнительные запросы не идентичны, потому что, например, вы настроили CloudFront для кэширования на основе заголовков запросов или файлов cookie, CloudFront перенаправляет все уникальные запросы в ваш источник. "

...