Quando e quando não usar uma CDN
Estou trabalhando em um aplicativo da web que carrega duas pequenas imagens gif na tela. Estou usando um caminho relativo, o que significa que eles são carregados no mesmo servidor web que serve a página php. A operação é instantânea e estou em um continente diferente do servidor da web.
Acabei de testar uma rede CDN para isso (Cloudfront), pensando que mover arquivos estáticos para mais perto do usuário é uma ótima idéia. No entanto, todos esses arquivos agora demoram meio segundo para serem renderizados na tela. Agora eu tenho que usar um caminho absoluto, é claro (https://xyzvf.cloufront.net/images/)
Por que é que? O caminho absoluto é um problema? Estou reduzindo as solicitações HTTP para o meu próprio servidor, o que é uma coisa boa, mas esse atraso é irritante. A CDN não é adequada para isso?
Depende da localização da CDN. Se você tem muitas imagens pequenas, combiná-las em um sprite é uma opção? Isso significaria apenas uma única solicitação para carregar todas as imagens.
Eles têm os seguintes locais: michaelgaigg.com/blog/images/amazon-cloudfront.jpg Estou na Europa e carregar as imagens do meu servidor da Web nos EUA é mais rápido do que carregar da Alemanha ou de qualquer outro local da Europa que a Amazon me servir. Ou talvez o tempo de carregamento não seja o problema, mas algo mais? Usar um sprite é uma ótima ideia, obrigado.
Você também pode usar uma URL sem protocolo com o nome do host, como "//xyzf.cloudfront.net/images". Isso permite que você aproveite os caches de ISP e proxy corporativo para armazenar em cache versões não SSL das imagens. Isso pode ter um tremendo benefício para a experiência do visitante e o carregamento do servidor / largura de banda. Os visitantes do nosso site são quase todos de instituições financeiras dos EUA e detectamos cerca de 85% das visitas por trás de alguma forma de proxy de cache. YMMV, então teste seu próprio site e tráfego, é claro.
Um problema pode ser o DNS ou keep-alive- ou seja, o navegador já possui o endereço IP do seu servidor e possui uma conexão aberta, enquanto ele precisa resolver o nome do servidor da CDN e abrir uma nova conexão lá, e um deles ou ambos constituem o atraso que você está vendo.
Spriting, embora ainda seja uma boa ideia, não ajudaria nesses problemas. De fato, nenhuma solução vem à mente. O único conforto é que o atraso de meio segundo não demoraria muito mais se você tivesse mil imagens (e arquivos CSS e arquivos JS e quaisquer outros arquivos estáticos que você precisasse) e não colocaria mais estresse no servidor de origem se um milhares de usuários atingem.
Isso toca uma campainha. Devo mencionar que a primeira chamada para o servidor CDN é feita quando a primeira imagem é necessária, como no meio da página.
Ah, então você poderá obter um desempenho melhor (percebido) se fizer uma referência, qualquer referência, à CDN muito cedo na página. A melhor maneira pode ser colocar seus arquivos CSS na CDN e colocar as linktags na headseção, para que o processo de conexão seja iniciado imediatamente.