Depois de mais algumas pesquisas, parece que o Cloudfront CAN pode armazenar todo o seu site, mas você quer ou não merecer uma investigação. Espero que isso seja útil para qualquer futuro transeunte.
Entrega de todo o site
Veja algumas informações em Entrega em todo o site Aviso: Este slide é de alto nível - não entra em detalhes de implementação
Para que cumpra todo o site , você precisa seguir estes passos gerais.
Let's assume you want to serve
example.com
andwww.example.com
via Cloudfront (you want Cloudfront to act as a site-wide cache, similar to how you might use Varnish).
Configurar uma distribuição
Configure uma distribuição na Cloudfront para o seu domínio.
- Normalmente, escolho deixar meu servidor de origem decidir as configurações de cache por meio de cabeçalhos de saída
- Defina sua origem para algo como
content.example.com
Aponte seu domínio
1) Aponte seus domínios de nível superior ( example.com
e provavelmente www.example.com
) para seu URL da Cloudfront. Isso será algo como abc123.cloudfront.net
em vez de um endereço IP
Note que este é um CNAME ( abc123.cloudfront.net
) em vez de um registro A (endereço IP). Se o seu DNS permite que você defina um CNAME sobre um A para o domínio raiz, acredito que pode variar entre provedores.
Na verdade, acho que definir um CNAME para o seu nível de domínio raiz é contra o RFC. Isso pode restringir você a configurar a versão "www" do seu domínio para a Cloudfront, usar o Route 53 ou usar o DNS Made Simple como este artigo sugere .
2) Defina seus registros DNS para que algo como content.example.com
aponte para o seu servidor de origem. Isso fornecerá uma maneira de o cloudfront alcançar seu servidor de origem, mas o público ainda usará example.com
e www.example.com
para visualizar o conteúdo do site
Advertências
Existem algumas ressalvas:
-
Cookies - Se o cache de cookies é importante ou não. Pedidos com cookies não são normalmente armazenados em cache (ou, mais precisamente, cada cookie exclusivo cria uma cópia em cache diferente ). Considere que a Cloudfront ignore os cookies definidos pelo servidor para que ele possa armazenar em cache o conteúdo. Isso não afetará os cookies adicionados no lado do cliente de serviços como o Google Analytics ou comentários do Disqus. Isso afetará a lógica do servidor se você confiar na separação de cookies / IDs de sessão de convidados e usuários autenticados.
-
A Cloudfront oferece suporte a solicitações
GET
eHEAD
. POST e outras solicitações de verbo HTTP resultarão em páginas de erro. Isso tem implicações se você permitir que os usuários enviem formulários, bem como solicitações ajax.
Eu não tenho usuários públicos no meu site. Eu tenho uma área de administração que eu uso sozinha. Portanto, posso entrar na área de administração do meu site por meio de content.example.com
diretamente, e não por meio do público example.com
e www.example.com
. Isso ignora completamente o cache, eliminando a necessidade de passar cookies e permitindo o uso de qualquer verbo HTTP.
Isso funciona para mim, mas desconfio que essa não seja uma ótima situação para a maioria das pessoas. YMMV com Cloudfront e cache de todo o site. Ainda é ótimo para o armazenamento em cache de recursos estáticos.