Я пытаюсь понять поведение Google CDN в следующем сценарии:
Предположим, у меня есть бэкэнд-служба, обслуживающая фрагментированные данные http.Для объяснения давайте предположим, что обработка одного запроса занимает до 10 с
Давайте представим случай, когда файл запрашивается через CDN клиентом А, и что этоВ настоящее время файл не кэшируется в CDN.Запрос поступит в бэкэнд-сервис, который начнет обслуживать файл.Клиент A немедленно начнет получать фрагменты HTTP
Через 5 секунд другой клиент B запросит тот же файл.Я могу представить 3 возможных варианта поведения, но не могу понять, как управлять этим с помощью конфигурации CDN:
Вариант a: CDN просто передает запрос бэкэнд-службе, игнорируяэта половина файла уже была обработана и может быть уже кэширована.Не желательно, так как служба бэкэнда будет доступна дважды и будет обслуживать одни и те же данные дважды.
Вариант b: CDN переводит второй запрос в режим «удержания», ожидая, пока первый запрос будет завершен, прежде чем обслуживать клиента Bиз своего кэша (в этом случае запрос B не попадает в бэкэнд-сервис).Хорошо, но все же не удивительно, так как клиент B будет ждать 5 секунд, прежде чем получать какие-либо данные http.
Вариант c: CDN немедленно обслуживает первую половину фрагментов http, а затем - остальные фрагменты http с той же скоростью, что изапрос А. Идеально!
Есть идеи по поводу текущего поведения?И что мы можем сделать, чтобы получить вариант C, который на сегодняшний день является нашим предпочтительным вариантом?
Tnx, хорошего дня!
Jeannot