Можно ли добавить логику в CDN

Можно ли обслуживать две разные страницы на основе пользовательского агента. Я хочу предоставить pagename-iphone.html, если пользовательский агент совпадает с iPhone, и pagename-other.html для всех остальных пользовательских агентов. Я хочу, чтобы все страницы на сайте следовали этому шаблону. Можно ли сделать это на уровне CDN (фронт облака, акамаи и т. Д.).

Спасибо за вашу помощь!

1 ответ

Решение

Я думаю, что вы после того, как кеширование на основе агента пользователя, как vary: User-Agent, Теоретически, сервер, предоставляющий службу кэширования, может это сделать, однако, насколько я могу судить, CloudFront и большинство других крупных провайдеров CDN не поддерживают этого.

Основная причина очень проста: в настоящее время существует слишком много заголовков User-Agent, и они почти уникальны для каждого отдельного браузера, не говоря уже о разных версиях одного и того же браузера. Если вы будете делать что-то только на основе всего User-Agent, большую часть времени вы потеряете преимущество кеша CDN.

Некоторые из более продвинутых серверов позволяют добавлять условия, основанные на заголовках, например, в Varnish, вы даже можете добавить if, иначе логику для возврата различных значений. Но это недоступно для большинства CDN.

С другой стороны, вы не должны полагаться на CDN, чтобы возвращать различные HTML-страницы. CDN чаще используется для ускорения артефактов (js/css/imgs) вместо всей страницы.

РЕДАКТИРОВАТЬ: На самом деле, я только что получил электронное письмо от AWS, упомянутое сейчас CloudFront начинает поддерживать это:

Обнаружение мобильного устройства: теперь вы можете кэшировать и доставлять персонализированный контент своим зрителям на разных устройствах (например, на мобильных и настольных компьютерах) в зависимости от значения заголовка User Agent.

Пожалуйста, обратитесь к: http://aws.amazon.com/about-aws/whats-new/2014/06/26/amazon-cloudfront-device-detection-geo-targeting-host-header-cors/ для получения более подробной информации.

Другие вопросы по тегам