Это своего рода теоретический вопрос, и я полагаю, что он может быть слишком общим или неясным.
Foobar — это приложение, обслуживающее пользователей по всему Интернету. Оно использует CDN для улучшения своей устойчивости, скорости и т. д., чтобы обслуживать людей, где бы они ни находились.
Определяются ли заголовки HTTP (полученные клиентом) CDN или приложением Foobar (подразумевая, что CDN будет их пересылать)?
Если оба варианта возможны, каковы их плюсы и минусы?
решение1
Универсального ответа не существует. Что делать с заголовками/для заголовков, зависит как от запроса, так и от конкретной CDN, конкретного заголовка и конфигурации вашего сайта (включая как заголовки, которые ваш внутренний/исходный сервер включает в ответ, и как вы настраиваете свой сайт в CDN).
Предположим, что по умолчанию большинствозаголовки будут удаленыиз ответа, сгенерированного внутренним/исходным сервером, и только (минимальный)Будет установлено подмножество заголовковв ответе, отправленном CDN.
Некоторые (специфичные для CDN) заголовкимощьбытьдобавленCDN в соответствии с вашими политиками или по умолчанию. Например, Fastly добавляетx-served-by:
заголовок по умолчанию, а CloudFront позволяет вам устанавливать и опционально Server-Timing:
заголовокдля облегчения отладки операций CDN.
Некоторые заголовкимощьбытьсохранилисьс вашего внутреннего сервера. Например, Cache-control:
и Expires:
заголовки довольно распространены. Смотрите, например:Документы Cloud Front
НекоторыймощьбытьскорректированоCDN определенным образом. Например, посмотрите, как Fastly справляется сDate:
заголовокустановлен в исходном положении.
Причины установки заголовков в CDN
Вместо того чтобы позволить каждому приложению делать то, что ему нужно, или не делать ничего, вы устанавливаете единую политику для всех своих сайтов и приложений на уровне CDN.
Хорошие примеры:КОРСиHSTSполитики.
Вы можете задать/добавить определенный заголовок только в CDN, если источник его не установил, но использовать значение из источника, если оно там установлено.
и т.д. и т.п.
Причины сохранения заголовков, установленных в исходном состоянии
Приложение (разработчик) лучше всех знает, что нужно приложению.
Переопределение политики кэширования по умолчанию с помощью Cache-Control: private, no-store
— это пример из учебника, который приходит на ум.
и т.д. и т.п.