Я вижу интересное поведение в Azure App Service, что я надеюсь, что кто-то будет достаточно любезен, чтобы комментировать.Azure App-Service Swap «Bounces» Между источником и назначением
шаги воспроизведения (все Лазурные шаги могут быть сделаны на портале):
- Создать новую Web App в App службы (стандартный уровень цен, один экземпляр отлично), например,
mysite
- Create a new staging slot для этого приложения, например.
mysite-staging
- Deploy голые кости ASP.NET приложение для
mysite
с файлом /scripts/test.js, который имеет содержание//ONE
- Deploy голые кости ASP.NET приложение для
mysite-staging
с файлом/скриптов/тестирования .js, который имеет содержание//TWO
- Swap the deployment slots
- Сразу после запуска замены, перейдите к
mysite.azurewebsites.net/scripts/test.js
и контролировать возвращенное содержимое во время операции свопа (при постоянно делая усилие-обновление в браузере)
Что я ожидал увидеть:
- В какой-то момент в ходе обмена, содержание изменяется плавно/последовательно/необратимо от
//ONE
до//TWO
Что я на самом деле вижу:
- Во время операции подкачки содержимое «мерцает»/«отскакивает» между
//ONE
и//TWO
. После того, как операция своп завершена, поведение устойчиво и//TWO
последовательно возвращается
Наблюдаемое поведение свидетельствует о том, что нет ни одной точки во времени, при котором весь трафик, можно сказать, идет к новой версии.
Причина это касается меня следующий сценарий:
- Пользователь запрашивает страницу mysite.azurewebsites.net, которая во время этого «прыгающий» стадии, реагирующий с «v2» версия страницы с ссылка на сценарий, размещенный на CDN
mycdn.com/scripts/test.js?v2
(?v2
- это новая строка запроса) - Браузер запрашивает скрипт из CDN, который, в свою очередь, запрашивает скрипт от
mysite.azurewebsites.net
. На этот раз «подпрыгивание» заставляет ответ быть версией сценария v1. - Теперь у нас есть версия v1 сценария кэшированных в CDN, что все пользователи в этой области будет загружаться с версией v2 страницы
Мой вопрос: Является ли это «прыгающий» поведение во время операция свопинга «по дизайну»? Если да, то каков рекомендуемый подход для решения патологического случая выше?
«В« Информатике »есть только две тяжелые вещи: кэш-аннулирование и именование вещей» (Фил Карлтон). Похоже, что операция свопинга должна аннулировать записи кэша в ваших интерфейсных экземплярах. Я предполагаю, что это не тривиально для вас, ребята, чтобы достичь. Обходной путь в моем случае - очистить содержимое CDN непосредственно после завершения операции свопинга, чтобы я мог быть уверен, что CDN содержит правильное содержимое. – sammy34