Redirecionar algumas solicitações de URL para o CloudFront e o restante para o servidor normal?

3

Digamos que eu tenha dois tipos de solicitações de URL que devem ser manipuladas pela minha API REST:

http://query.restapi.com/image.png?apikey=abc123

http://query.restapi.com/2.0/<apiKey>/resource.json?from=umi.us_census00.state_geometry

Somente para imagens estáticas (ou seja, regex: *.png?.* ) eu preciso aproveitar o cache do CloudFront e o restante das solicitações não obterá dados em cache e precisará ir para o servidor EC2 normal (ou em menos tomar uma rota indireta mais rápida para o servidor EC2 normal?).

Talvez o tempo de solicitação adicionado para as falhas no CloudFront seja irrelevante para se preocupar?

Ou talvez a minha situação não seja a melhor para usar no CloudFront?

    
por b_dev 30.05.2012 / 22:35

2 respostas

4

Você deve construir seu HTML para usar um nome de host de URL diferente para conteúdo estático.

Use o firebug para ver o conteúdo principal de qualquer grande empresa da Web.

O Facebook (por exemplo) usa o link para conteúdo estático que supomos estar usando o Akamai. (outro CDN como Cloudfront) outro conteúdo menos estático vem diretamente do facebook.com.

Você pode tornar a vida um pouco mais fácil usando um CNAME.

por exemplo. static.restapi.com - > d1234.cloudfront.net

Em seguida, você só precisa trabalhar em como suas páginas são apresentadas para usar o nome do host principal para páginas dinâmicas e o nome de host estático para conteúdo estático.

Você menciona "redirecionando" acima. Eu quero ter certeza que você não tente fazer redirecionamentos HTTP. Se os usuários finais precisarem acessar seu site para obter o redirecionamento, uma boa parte da aceleração que um CDN fornece já está perdida. Você quer um hit para sua página principal e, em seguida, ter o máximo de conteúdo possível carregado de CDNs que estão mais próximos do usuário final.

Faz sentido?

    
por 30.05.2012 / 23:04
1

Como o @JoelK disse, você deveria estar usando um domínio diferente para conteúdo estático. O domínio estático (por exemplo, static.restapi.com) seria totalmente veiculado pelo CloudFront e o domínio dinâmico (por exemplo, query.restapi.com) exibido por sua instância do EC2. Se você precisar restringir o acesso aos recursos estáticos, consulte os URLs assinados do CloudFront, que permitem que você gere URLs que são válidas apenas por um determinado período. (Os usuários da API não devem se referir ao conteúdo estático diretamente - a API deve fornecer a localização dos recursos estáticos.)

Se você usar um redirecionamento HTTP do seu servidor EC2 para o CloudFront, não obterá nenhum benefício do CloudFront, pois os clientes ainda precisarão fazer essa solicitação ao EC2 para cada recurso estático.

Se, por algum motivo, você não puder hospedar o conteúdo estático em um domínio diferente, poderá usar o suporte do CloudFront para conteúdo dinâmico . Ele permite que você configure várias origens para uma distribuição do CloudFront, para que seu conteúdo estático e dinâmico possa ser atendido pelo CloudFront em um único domínio.

    
por 31.05.2012 / 00:33