CDN da Microsoft para jQuery ou CDN do Google? [fechadas]


187

Realmente importa qual CDN você usa para vincular ao seu arquivo jquery ou a qualquer arquivo javascript para esse assunto. Um é potencialmente mais rápido que o outro? Que outros fatores poderiam desempenhar um papel no CDN que você decide usar? Eu sei que a Microsoft, Yahoo e Google agora têm CDNs.

Respostas:


151

Atualização baseada em comentários:

Versão curta: Não importa muito, mas pode depender do que eles hospedam. Todos eles acolhimento coisas diferentes: Google não hospeda jQuery.Validate, a Microsoft não fez anfitrião jQuery-UI, desde 2016 eles fazem !!, a Microsoft oferece seus scripts que seriam servidos via ScriptResource.axde uma integração mais fácil (por exemplo ScriptManager com ASP. Net 4.0 ).

Nota importante: Se você estiver criando um aplicativo de intranet, fique longe da abordagem da CDN. Não importa quem está hospedando-o, a menos que você está em um muito servidor sobrecarregado internamente, não CDN lhe dará mais desempenho do que 100mb local / 1GB Ethernet. Se você usar uma CDN para um aplicativo estritamente interno, estará prejudicando o desempenho . Defina corretamente os cabeçalhos de expiração do cache e ignore as CDNs no cenário somente da intranet.

As chances de serem bloqueadas parecem quase iguais, quase nulas. Eu trabalhei em contratos onde isso não é verdade, mas parece ser uma exceção. Além disso, desde a postagem original desta resposta, o contexto em torno dela mudou bastante, a CDN da Microsoft fez muitos progressos.

O projeto em que estou atualmente usa as duas CDNs, que funcionam melhor para nossa solução. Vários fatores contribuem para isso. Os usuários com um navegador mais antigo provavelmente ainda estão fazendo 2 solicitações simultâneas por domínio, conforme recomendado pela especificação HTTP . Isso não é um problema para quem executa algo decentemente novo que suporta pipelining (todos os navegadores atuais), mas com base em outro fator, estamos eliminando essa limitação também, pelo menos no que diz respeito ao javascript.

CDN do Google que estamos usando para:

CDN da Microsoft que estamos usando para:

Nosso servidor:

  • Combined.js? V = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

Como parte do nosso processo de compilação está combinando e minificando todo o javascript personalizado, fazemos isso por meio de um gerenciador de scripts personalizado que inclui as versões de lançamento ou depuração (não minificadas) desses scripts, dependendo da compilação. Como o Google não hospeda o pacote de validação do jQuery, isso pode ser uma desvantagem. O MVC está incluindo / usando isso em sua versão 2.0, para que você possa confiar completamente na CDN da Microsoft para todas as suas necessidades, e tudo isso automaticamente através do ScriptManager .

O único outro argumento a ser levantado seria o tempo de DNS; há um custo para isso em termos de velocidade de carregamento da página. Em média: simplesmente porque é usado mais (já existe há mais tempo) ajax.googleapis.comprovavelmente será retornado pelo DNS mais cedo do que ajax.microsoft.com, simplesmente porque o servidor DNS local tem mais chances de receber uma solicitação (este é o primeiro usuário na penalidade de área) . Isso é algo muito pequeno e só deve ser considerado se o desempenho for extremamente importante, até o milissegundo.
(Sim: eu sei que esse ponto é contrário ao uso das duas CDNs, mas, no nosso caso, o tempo do DNS é muito ofuscado pelo tempo de espera no javascript / bloqueio que ocorre)

Por fim, se você ainda não viu, uma das melhores ferramentas disponíveis no mercado é o Firebug , e alguns plug-ins: Speed ​​da página e YSlow . Se você usa uma CDN, mas suas páginas solicitam imagens todas as vezes por causa de nenhum cabeçalho de cache, você está perdendo a fruta mais baixa. O painel Net do Firebug pode rapidamente fornecer uma rápida análise do tempo de carregamento da página, e o Page Speed ​​/ YSlow pode oferecer algumas boas sugestões para ajudar.


26
Menos provável de ser bloqueado? Eu adoraria saber como você teve essa ideia. De qualquer forma, a rede MS não é da MS; são os akamai que trabalham com servidores com balanceamento de carga por muito mais tempo do que o Google, o que faz um absurdo do "melhor sistema de fall-over" também. Realmente, se você for fazer reivindicações como essa, alguma evidência seria boa.
blowdart 11/10/09

16
Algumas empresas, e eu trabalhei por algumas, bloqueiam * .microsoft.com diretamente como parte do bloqueio do Windows Update. Isso está correto? Não, isso acontece? Sim. Exemplo: ajax.microsoft.com/...it se enquadra no bloco * .microsoft.com e não na exceção www, é bloqueado quando uma empresa decide bloquear qualquer coisa, exceto www.microsoft.com. Eu não disse que é muito provável, eu disse que é mais provável, pois nunca vi o google bloqueado, mas vi o contrário.
Nick Craver

5
E vi o google bloqueado para interromper o gmail em sites do governo. Mas, como é tão raro, eu dificilmente tentaria usá-lo como justificativa neste caso.
blowdart 11/10/09

19
Desde que isso foi escrito, a MS adicionou a jQuery-UI ao CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean

3
@Nick A Microsoft mudou o CDN de ajax.microsoft.com para ajax.aspnetcdn.com. Portanto, não há chance de bloquear a CDN da Microsoft como parte do bloqueio das Atualizações do Windows.
Sachin Joseph

88

Você deve usar absolutamente o CDN do Google para jQuery (e isso é proveniente de um desenvolvedor centralizado na Microsoft).

São estatísticas simples. Aqueles que considerariam usar o MS CDN para jQuery sempre serão uma minoria. Existem muitos desenvolvedores que não são de MS usando jQuery que usarão o Google e não considerariam o uso da Microsoft. Como uma das grandes vitórias com uma CDN pública é o cache aprimorado , a divisão do uso entre várias CDNs diminui o potencial para esse benefício.


7
se continuarmos pensando assim, apenas maiores serão capazes de respirar. Não use apenas o google porque é o google e assuma que todos estão com eles (sem dúvida, a maioria está com eles). Mas vamos melhor vencer, comparar resultados e ir com eles.
mamu 19/08/10

20
Não é uma suposição. Os sites entre os 200.000 sites da Alexa que mais usam a CDN do Google superam os 100: 1 da Microsoft. Em termos de popularidade para o armazenamento em cache, o único ponto a favor da CDN do MS jQuery é que o Microsoft.com o utiliza, o que proporciona muita exposição somente dessa referência (mas não tanto quanto os milhares de sites de referência no Google )
Dave Ward

@DaveWard, você pode verificar se esse ainda é o caso ou se as tabelas mudaram um pouco nos últimos anos?
snumpy

3
@ snumpy: O CDN do Google ampliou bastante sua vantagem em relação ao que vi. Não há nada errado com o CDN da Microsoft. É rápido e possui alguns arquivos que o Google não possui. O benefício de armazenamento em cache entre sites depende da cobertura em toda a rede, e o Google domina todos os outros nesse sentido.
Dave Ward

Como mudei do jQuery CDN para o Microeoft para hospedar o jQuery Mobile, mudei meus outros downloads de jQuery para ele do Google para reduzir o número de ida e volta do DNS. Apenas mais um fator :)
Rob Grant

20

O Google enviará a você uma versão jQuery minificada com seu próprio software; essa versão é 6kb mais leve que a versão minificada padrão oferecida pela MS. Vá para o Google.


18

Uma coisa pequena a considerar é que ambas as empresas oferecem bibliotecas "extras" ligeiramente diferentes:

Dependendo das suas necessidades, isso pode ser relevante.


23
Desde que isso foi escrito, a MS adicionou a jQuery-UI ao CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean

15

Observe também que, como ajax.microsoft.com é um subdomínio das solicitações do microsoft.com, todos os cookies do microsoft.com são enviados, aumentando o tempo total necessário para recuperar o arquivo.

Além disso, ajax.microsoft.com está usando a compactação padrão do IIS7, que é inferior à compactação padrão que outros servidores da Web usam.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33,4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26,5K

Além disso, como outros usuários mencionaram, o Google CDN é muito mais popular, o que aumenta muito a chance de um arquivo ser armazenado em cache.

Então eu recomendo usar o google.


3
Essa era uma boa objeção na época, mas não se aplica mais, já que o nome de domínio da CDN recomendado agora é ajax.aspnetcdn.com. O bloqueio da objeção * .microsoft.com também não se aplica.
Stephen Kennedy

isso é verdade. feliz por finalmente terem consertado essa parte. Agora não me sinto tão mal por incluir o plugin jquery validate / cycle do ms cdn.
Alistair

A coisa de cookies também não se aplica mais por causa da mudança para aspnetcdn.
Rob Grant

11

Provavelmente não importa, mas você pode validar isso com alguns testes A / B. Envie metade do seu tráfego para um CDN e metade para o outro e configure alguns perfis para medir a resposta. Eu acho que é mais importante poder alternar facilmente caso um ou outro tenha sérios problemas de indisponibilidade.


7

Eu sei que estou falando um pouco tarde aqui, mas aqui está o código que eu tenho usado na produção. Nunca tive problemas com isso, mas sua milhagem pode variar. Certifique-se de testá-lo em seu próprio ambiente.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

1
Infelizmente, alguns navegadores (IE6) não atrasam o processamento desse script online até após o carregamento do script src =, portanto, isso não funcionará conforme o esperado. Gostaria que sim!
Walden Leverich

2
Portanto, seus usuários do IE6 experimentam uma experiência um pouco lenta. Boa troca, se você me perguntar. O IE6 está em declínio ... mesmo nas intranets corporativas.
Armstrongest

7

É sobre estatísticas: jquery.com carrega o jQuery do Google. E o Twitter também, Stackoverflow e muitos outros. Portanto, existem possibilidades muito altas de que o usuário do site já o armazene em cache = nenhum download .

Esqueça o validador, a largura de banda e a velocidade, porque esse é o principal benefício. Caso contrário, qualquer outra opção da CDN funcionará essencialmente no mesmo nível.


1
Sim, mas o Twitter (de acordo com a encosia.com/2010/09/15/… ) de Dave Ward usa o jQuery 1.3.0 (no Twitter "antigo") para que eles realmente não
importem

Bem, sites que fiz há algum tempo ainda usam o jQuery 1.3.0, como o Twitter (antigo). Sempre importa.
achairapart

6

Um é potencialmente mais rápido que o outro?

Eu estava realmente curioso disso, então configurei uma página de teste do jsbin usando cada um dos itens a seguir e executei-a na ferramenta de comparação visual do webpagetest.org. Eu testei:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

Quem foi o mais rápido: code.jquery.com por 0,1 segundo nos dois testes

Quem foi o mais lento: ajax.aspnetcdn.com por 0,7 segundos no primeiro teste e ajax.googleapis.com por 1 segundo no segundo teste

Aqui está o primeiro teste (cada um foi testado 3 vezes):

Vídeo: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Relatórios: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Aqui está o segundo teste (mais três cada):

Vídeo: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Relatórios: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR


4

Como afirma Pingdom :

Quando alguém visita seu site, se ele já visitou outro site que usa o mesmo arquivo jQuery na mesma CDN, o arquivo será armazenado em cache e não precisará ser baixado. Não pode ficar mais rápido que isso.

Isso significa que a CDN mais usada terá as probabilidades do seu lado, o que pode render seu site.

Algumas observações sobre o desempenho: a CDN do Google é consistentemente a mais lenta das três na América do Norte e na Europa. Na Europa, o CDN da Microsoft é o mais rápido.


3

Eu acho que depende de onde está o seu público-alvo. Você pode usar o alertra.com para verificar a velocidade da CDN em vários locais do mundo.


Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem.
Fiona - myaccessible.website

1
Para Fiona, é a minha resposta para a pergunta. A pergunta é "isso importa", minha resposta é "depende de onde o público-alvo está localizado", e eu forneci um site para testar a velocidade de diferentes lugares do mundo para que ele decida qual CDN usar. Não é um comentário, é uma resposta.
silencioso

3

Uma consideração adicional - se o seu site for SSL e você precisar oferecer suporte ao Android 2.1 (ou anterior), o certificado SSL na versão HTTPS da CDN da Microsoft trava essas versões do navegador Android, de acordo com este problema: http: // code .google.com / p / android / issues / detail? id = 5001 . Não é "culpa" da Microsoft, pois o certificado SSL é tecnicamente válido e o defeito está na implementação SSL do Android ... mas, mesmo assim, ele trava o site.

O certificado SSL na CDN do Google não entra em conflito com esse problema específico (relacionado ao "Nome alternativo do sujeito do certificado").

Portanto, para suporte ao SSL + Android 2.1, use o CDN do Google.


2

Minha resposta é um pouco diferente das outras, irei com a microsoft se você precisar do jquery validator que quase todo mundo precisa se você estiver usando o jquery.

A conexão http da CDN da Microsoft é Keep-Alive, que é grande vantagem quando você está solicitando vários itens.

Portanto, se você precisar da validação de jquery, use o Microsoft CDN, mesmo que você precise do jquery ui. então misturar dessa maneira é positivo. Se você estiver usando a Microsoft apenas para validador, estará fazendo uma conexão separada com o servidor do Google para cada solicitação.



1

Considere também, ao usar o CDN do Google, que algumas vezes as pessoas cometem erros de digitação, como ajax.googelapis.com. Isso pode potencialmente criar um ataque xss (script entre sites) realmente muito desagradável. Na verdade, testei isso registrando um erro de digitação no googlapis.com e rapidamente me vi servindo solicitações de javascript, mapas, css etc.

Enviei um e-mail ao Google e solicitei que registrassem URLs de erro de digitação CDN semelhantes, mas não obtivemos resposta. Esse pode ser um motivo real para não confiar nas CDNs, porque há invasores potencialmente perigosos aguardando as solicitações de erro de digitação e pode servir com facilidade jquery etc, com uma carga útil de xss.

Obrigado


1
talvez um pouco fora do tópico, mas um ponto interessante.
achairapart

1

Dependendo do setor de destino do aplicativo, você pode não querer usar uma CDN gerenciada por outras organizações. Muitas vezes, levanta questões relacionadas à conformidade, privacidade e confidencialidade.

Por exemplo, quando você inclui o Google Analytics em um aplicativo seguro, o navegador ainda envia o URL atual como o cabeçalho "referenciador". Quaisquer identificadores, digamos, um ID de sessão ou token secreto, podem aparecer em seus logs. Por exemplo, se um IP de cliente 192.0.2.5 fizer referência a https: //healthsystem.example/condition/impotence , então você poderá inferir informações que são consideradas bastante privadas.

Outros casos incluem informações importantes, como número da conta, número do seguro social ou informações da sessão no URL. Esse tipo de dado nunca deve estar no URL, pois pode ser usado fora do aplicativo.

Embora você possa confiar no Google, Microsoft ou Yahoo, seus usuários não.

Para setores como Finanças, Jurídico e Assistência à Saúde, convém estabelecer seu próprio CDN com a ajuda de um fornecedor (por exemplo, Akamai) com o qual você pode assinar um BAA.


1

Recomendamos que você baseie seu uso na localização geral dos usuários que você está segmentando.

Se o seu site for direcionado ao público em geral, usar a CDN do Google seria uma boa opção.

Se o seu site também é direcionado para a China, usar a CDN da Microsoft seria uma escolha melhor. Sei pela minha experiência, pois os servidores do Google ficavam bloqueados pelo governo chinês, tornando os sites que os usam não carregáveis.

* Observe que você pode criar sites específicos da região, por exemplo, cn.mysite.com para atender especificamente à China, mas se você tiver pouco tempo e recursos, vale a pena considerar.

Lista completa de CDN da Microsoft aqui. http://www.asp.net/ajaxlibrary/cdn.ashx

Eles renomearam para ajax.aspnetcdn.com , o que reduz a probabilidade de bloqueio por regras de firewall.


-3

Eu usaria os dois!

Como a hospedagem do Google Jquery existe há muito mais tempo, as chances são muito maiores de que as pessoas já o tenham armazenado em cache em comparação com o da Microsoft, então eu o gostaria primeiro.

Pessoalmente, eu usaria algo assim -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(Não tenho certeza se 100% funciona, mas eu ia escrever a idéia e não o exemplo - isso faz referência ao Jquery hospedado no Google e não ao da Microsoft, pois não consegui encontrar o link)


6
O jQuery nunca será definido, a menos que você o traga para sua página. O cache do arquivo .js doe snot o torna disponível para todas as páginas do navegador por padrão!
Falkayn 25/11/2009

1
Funciona: S Leia novamente o script - se não estiver definido, ele grava isso e carrega?
Wil

12
Eu nunca entendi por que as pessoas fazem "<scr" + "ipt ..."
covarde anônimo

3
"Dependendo do navegador, da quantidade de outro javascript anterior e da forma como o código geral está formado, isso é feito para impedir que o analisador interprete as tags <script> e </script> como código executável e não como uma string para ser escrito. "
SeanJA

2
O problema é que jQuerynunca será definido, a menos que você o tenha carregado ativamente. No seu script, o primeiro ramo sempre será executado (a menos que você tenha outra inclusão no jQuery acima), tornando o script supérfluo.
jensgram
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.