Перенаправить некоторые URL-запросы в CloudFront, а остальные - на обычный сервер?
Скажем, у меня есть два типа запросов URL, которые должны обрабатываться моим REST API:
http://query.restapi.com/image.png?apikey=abc123
http://query.restapi.com/2.0/<apiKey>/resource.json?from=umi.us_census00.state_geometry
Только для статических изображений (например, регулярное выражение: *.png?.*
) нужно ли мне воспользоваться преимуществами кэширования CloudFront, а остальные запросы не получат кэшированные данные и должны будут перейти на обычный сервер EC2 (или, по крайней мере, выбрать более быстрый косвенный маршрут к обычному серверу EC2?).
Возможно, дополнительное время запроса на промахи к CloudFront не имеет значения для беспокойства?
Или, может быть, моя ситуация не лучше использовать для CloudFront?
2 ответа
Вы должны создать свой HTML-код, чтобы использовать другое имя хоста URL для статического содержимого.
Используйте Firebug, чтобы взглянуть на основной контент любой крупной веб-компании.
Facebook (например) использует http://static.ak.fbcdn.net/ для статического контента, который, как я предполагаю, использует Akamai. (еще один CDN, такой как Cloudfront), другой, менее статичный контент поступает непосредственно с facebook.com.
С помощью CNAME вы можете немного облегчить себе жизнь.
например. static.restapi.com -> d1234.cloudfront.net
Тогда вам просто нужно поработать над тем, как представлены ваши страницы, чтобы использовать основное имя хоста для динамических страниц и статическое имя хоста для статического содержимого.
Вы упоминаете "перенаправление" выше. Я хочу убедиться, что вы не пытаетесь делать перенаправления HTTP. Если вашим конечным пользователям необходимо перейти на ваш сайт, чтобы получить перенаправление, значительная часть ускорения, обеспечиваемого CDN, уже потеряна. Вы хотите один удар для своей главной страницы, а затем загружать как можно больше контента из CDN, которые ближе к конечному пользователю.
Есть смысл?
Как сказал @JoelK, вы действительно должны использовать другой домен для статического контента. Статический домен (например, static.restapi.com) будет полностью обслуживаться CloudFront, а динамический домен (например, query.restapi.com) обслуживается вашим экземпляром EC2. Если вам нужно ограничить доступ к статическим ресурсам, взгляните на подписанные URL-адреса CloudFront, которые позволяют создавать URL-адреса, действительные только в течение определенного времени. (Пользователи API не должны обращаться к статическому контенту напрямую - API должен предоставлять расположение статических ресурсов.)
Если вы используете HTTP-перенаправление с вашего сервера EC2 на CloudFront, вы не получите никакой выгоды от CloudFront, потому что клиентам по-прежнему нужно делать этот запрос к EC2 для каждого статического ресурса.
Если по какой-то причине вы не можете разместить статический контент в другом домене, вы можете использовать поддержку CloudFront для динамического контента. Он позволяет настроить несколько источников для распределения CloudFront, поэтому CloudFront может обслуживать как статический, так и динамический контент в одном домене.