Скажем, у меня есть два типа 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?
Вы должны сконструировать свой 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. Если вам нужно ограничить доступ к статическим ресурсам, взгляните на CloudFront подписанные URL, которые позволяют создавать URL-адреса, действительные только в течение определенного времени. (Пользователи API не должны напрямую обращаться к статическому контенту - API должен указывать расположение статических ресурсов.)
Если вы используете HTTP-перенаправление со своего сервера EC2 на CloudFront, вы не получите никаких преимуществ от CloudFront, потому что клиентам все равно необходимо делать этот запрос к EC2 для каждого статического ресурса.
Если по какой-то причине вы не можете разместить статический контент в другом домене, вы можете использовать поддержку CloudFront для динамический контент. Он позволяет вам настроить несколько источников для распространения CloudFront, поэтому ваш статический и динамический контент может обслуживаться CloudFront в одном домене.