Como "refrescar" ficheiros no Amazon Cloudfront
Como "refrescar" ficheiros no Amazon Cloudfront https://brunobrito.pt/wp-content/uploads/2015/03/como-refrescar-ficheiros-amazon-cloudfront.png 620 350 Bruno Brito Bruno Brito https://brunobrito.pt/wp-content/uploads/2015/03/como-refrescar-ficheiros-amazon-cloudfront.png 20/03/2015 19/01/2017
Não há dúvida que os Amazon Web Services oferecem soluções fantásticas para todo o tipo de empresas. O seu baixo custo, aliado à panóplia de serviços e à possibilidade de só pagar consoante o uso, atrai inúmeras inúmeras start-ups, que dependem dos AWS como nós dependemos de electricidade.
Mas não são só start-ups que podem beneficiar deste produto da Amazon; os nossos sites WordPress podem ficar mais rápidos com uma CDN, utilizando o serviço Cloudfront (podes aprender a configurar uma CDN aqui) e esta é, na verdade, uma das melhores dicas para aumentar a velocidade dos nossos sites.
Com o serviço S3 e com o Cloudfront podemos ainda criar um site estático sem grandes problemas – e para um pequeno projecto recente, decidi experimentar esta solução ao invés de recorrer ao meu serviço de hosting habitual.
Criando um website estático no Amazon S3
Depois de criar os ficheiros HTML e CSS localmente, bastou criar um bucket novo no serviço S3 e fazer o upload de todos esses documentos para o bucket.
Como queremos que as pessoas visitem automaticamente uma página quando acedem ao nosso site, temos de indicar nas Properties, no separador Static Website Hosting, que se trata de um website estático, activando essa funcionalidade e indicando o Index Document, o documento onde tudo começa, que é geralmente o ficheiro index.html.
Uma vez associado o Cloudfront a este bucket e criados os habituais CNAMEs (podes ver como aqui), o site estava pronto!
Quem utilizar o Cloudfront rapidamente descobrirá que os ficheiros ficam em cache durante várias horas, o que significa que se quisermos fazer um overwrite a um ficheiro, com uma actualização a um documento HTML ou uma nova versão de uma imagem, teremos de esperar potencialmente 24 horas até que essas alterações se manifestem no nosso site.
É verdade que podemos determinar com que periodicidade queremos que o Cloudfront descarregue uma nova versão dos nossos documentos, mas se não soubermos quando os vamos alterar, de pouco nos serve.
Para contornar esta situação, a Amazon dá-nos 2 soluções:
criamos várias versões dos ficheiros (imagem_1.jpg, imagem_2.jpg, etc) e actualizamos os links sempre que houver uma nova versão;
criamos uma Invalidation, que basicamente forçará um refrescamento dos ficheiros, eliminando os ficheiros que estão na cache e obrigando o Cloudfront a descarregar as versões mais recentes dos mesmos.
Para esta situação, a 2ª solução parece-me francamente mais vantajosa – os nossos URLs ficarão intactos, não sendo necessário colocar números nos nossos documentos ou substituir links.
O único potencial problema é que pagamos por estas Invalidations se superarmos 3.000 objectos mensais, algo que em todo o caso dificilmente acontecerá se se tratar de um site de pequena dimensão.
Como criar uma Invalidation
Criar uma invalidation é um par de cliques e no prazo de 10–15 minutos (dependendo do número de ficheiros a invalidar) teremos o nosso site (ou ficheiros) actualizados em todos os servidores Amazon.
Feito o login no AWS, deveremos começar por aceder às nossas distribuições Cloudfront, escolhendo depois a distribuição que tem os ficheiros que queremos invalidar.
Após um clique na distribuição certa, deveremos escolher o último separador, intitulado precisamente Invalidations.
Uma vez neste ecrã, deveremos clicar em Create Invalidation, indicando depois os ficheiros que queremos alterar (como por exemplo, o nosso index.html) e clicando em Invalidate.
O processo terá aí início, ficando o seu status "In Progress"…
… até que finalmente, passados alguns minutos, passará para "Completed".
Agora podemos fazer refresh no nosso browser e voilá, os nossos novos ficheiros vão finalmente aparecer, sem mais demoras!