Fornecendo recursos locais de JS e CSS para fallbacks da CDN

13

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.

ValarDohaeris
fonte
Eu não brinquei com as CDNs, mas parece que deve ser possível automatizar todas, exceto uma dessas etapas, como parte do processo de implantação padrão.
Ixrec 30/03
Fallback.jsnão é mantido porque já funciona perfeitamente? O software não precisa ser alterado a cada 5 minutos, se já estiver funcionando.
Robert Harvey
1
Não, eu argumentaria que não funciona perfeitamente, caso contrário, não vejo por que o autor teria começado a trabalhar em uma nova versão 2. Eu também alegaria que uma biblioteca que é tão essencial para o funcionamento correto de um site tem para ser continuamente testado e aprimorado. Pelo que entendi, adicionar mais testes e IC em diferentes navegadores é, na verdade, um dos principais objetivos da versão 2. Atualmente, também não possui suporte para SRI.
ValarDohaeris 30/03

Respostas:

1

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.

Ewan
fonte
Você pode ter um backup da CDN que aumenta automaticamente. E com a CDN, não se trata do tráfego, mas também de ser mais confortável e reduzir custos. Eu acho que a CDN também faz sentido no site de baixo tráfego, por que não deveria?
precisa saber é o seguinte
1

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.

Sutty1000
fonte
0

Vejo três razões muito importantes para usar CDNs:

  1. 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.

  2. 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.

  3. A CDN é mais fácil de manter e mais barata que os servidores de aplicativos que oferecem conteúdo dinâmico. Quando você precisa lidar com os problemas mencionados acima, é uma maneira natural de economizar dinheiro.

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,

Ivan Gammel
fonte