Dado que
- As CDNs são uma coisa boa porque podem servir recursos mais próximos ao cliente, o cliente pode armazená-los em cache e você pode reduzir a carga no seu próprio servidor.
- Em navegadores recentes, o carregamento de recursos de servidores de terceiros não diminui a segurança, graças ao Subresource Integrity (SRI) .
- As CDNs podem estar inativas ou bloqueadas em alguns países e não estão disponíveis no desenvolvimento offline 1 .
Eu acho que é atraente usar CDNs, mas também estar preparado para que não estejam disponíveis. Esta postagem do blog fornece uma boa introdução a diferentes abordagens para fornecer fallbacks. Se você observar o exemplo básico , poderá ver que ele já contém um pouco de código padrão para fornecer fallbacks apenas para jQuery e Bootstrap, enquanto a solução preferida sugere o uso de Fallback.js , que parece não ter sido mantido no último ano . Da mesma forma, a questão SO mais relevante para o tópico é apenas fornecer um fallback para o jQuery.
No entanto, na maioria dos projetos do mundo real, eu esperaria ter 5 ou mais recursos js / css, por isso acho que você não deve repetir alguns clichês confusos para fornecer fallbacks para todos eles. Além disso, toda vez que você adiciona ou atualiza um recurso, agora é necessário
- Atualize o link CDN
- Atualize a cópia local de fallback baixando manualmente ou alterando a versão em npm / bower config
- Atualize o link para o fallback
- Atualize o hash do SRI
Enquanto no Mundo Ideal , eu esperaria adicionar / atualizar o recurso em um arquivo de configuração e executar todas as outras etapas automaticamente (e depois executar testes para verificar se a atualização quebrou alguma coisa).
Já existe um fluxo de trabalho estabelecido para conseguir isso?
Ou as CDNs, e especialmente a SRI, ainda são muito recentes?
Ou a maioria das pessoas simplesmente não se importa em fornecer substitutos para os recursos da CDN?
1. Embora você possa ter uma compilação de desenvolvimento que não dependa de CDNs, também considero uma forma de fallback, pois ela também precisa ser mantida.
fonte
Fallback.js
não é mantido porque já funciona perfeitamente? O software não precisa ser alterado a cada 5 minutos, se já estiver funcionando.Respostas:
Acho que você talvez entenda mal como sites maiores, que podem precisar desse tipo de resiliência, usam CDNs.
não é apenas uma questão de hospedar o jQuery ou algumas imagens. A maioria do site será hospedada na CDN, com apenas coisas geradas dinamicamente, como páginas de pagamento ou cestas de compras, sendo hospedadas nas 'principais webfarms'
Mesmo estes estão cada vez mais sendo processados localmente com JS e cookies para exibir itens específicos do usuário sem afetar o processamento no servidor.
Se uma CDN falhar e você começar a receber todo o tráfego passado para o servidor da Web, é provável que caia, caso contrário, você realmente não precisaria da CDN.
fonte
O site em que trabalho na nossa CDN se tornou cada vez mais importante para o site. No começo, simplesmente o usamos para armazenar em cache Images / CSS / JS. Nesse estágio, tínhamos uma propriedade de configuração que reescreveu o nome do host desses recursos de www.mysite.com/ para www.cdn.com/, portanto, se a CDN cair, poderíamos simplesmente mudar esse valor do host ou desativá-lo completamente e deixar os URLs apontando para o nosso servidor da web.
No entanto, agora passamos para o cache de páginas basicamente inteiras, com conteúdo personalizado sendo carregado via AJAX. Nossa CDN se tornou essencial para o nosso site e poderíamos executar tanto sem ele quanto nossos próprios servidores HTTP. Pagamos um bom dinheiro ao CDN, em parte por causa da resiliência e das promessas de SLA de tempo de atividade, portanto, dedicar tempo e esforço a fallbacks parece uma perda de tempo. Temos um plano de recuperação de desastres em vigor, caso haja um grande problema com nosso provedor, mas este não é um processo automatizado simples e sofreria um período de interrupção ao migrar para a CDN de fallback.
Portanto, em resposta à sua pergunta, depende de quão integral é a CDN do seu site. Se forem apenas os seus ativos que você está colocando na CDN e supondo que seus servidores http possam lidar com a carga de veiculação desse conteúdo, você poderá usar uma opção de configuração para essencialmente ativar ou desativar a CDN. Juntamente com uma ferramenta de monitoramento, você pode automatizar a ativação ou desativação do interruptor.
fonte
Vejo três razões muito importantes para usar CDNs:
Reduza a latência da rede para usuários em regiões distantes. Quando você tem um site para o público global, sua hospedagem na América do Norte não parece rápida para os usuários no sul da Ásia, principalmente na China. A diferença na experiência do usuário pode ser tão grande que desencoraja os usuários de usar seu site. Nesse caso, a CDN multirregional será essencial para o seu negócio.
Sirva o máximo possível de recursos altamente disponíveis. A confiabilidade é um dos principais motivos para o uso de CDNs na nuvem - o tráfego é redirecionado automaticamente para os nós disponíveis e você pode adicionar algumas medidas extras para redirecionar o tráfego se toda a região da nuvem estiver inativa.
Tudo isso significa que o objetivo da CDN é aumentar a disponibilidade do seu conteúdo para os usuários finais. Se a CDN falhar ou ficar lenta por algum motivo, o fallback do lado do cliente aumentará significativamente o carregamento da página, porque primeiro tentará obter o recurso que não está acessível. A melhor solução é ter o design do servidor que substituirá o URL base em links como "{CDN} /js/jquery-version-min.js". Isso permitirá redirecionar o tráfego para o servidor de aplicativos em vez da CDN se a verificação de integridade da CDN falhar - os clientes não executarão solicitações desnecessárias e irão diretamente para o servidor de aplicativos, que seria o seu substituto na solução do lado do cliente. Isso também resolverá o problema de implantações locais e temporárias,
fonte