Por que devo usar o CDN do Google para jQuery?

169

Isso pode ser óbvio para alguns, mas eu tenho me perguntado: por que devo depender do servidor do Google para hospedar o jQuery no meu site?

É apenas porque carrega mais rápido dessa maneira?

Yvette
fonte
1
Veja também: stackoverflow.com/questions/547384/…
Jørn Schou-Rode
2
Ninguém menciona qual era a política do Google em hotlinks para seus arquivos JS (dado que hotlinks geralmente são mal vistos), então aqui está o URL em que o Google menciona que isso está OK e mais sobre as bibliotecas que eles hospedam: code.google.com/apis/ajaxlibs/ documentation / index.html
Loftx 9/02/10
1
Muitos usuários já baixaram o jQuery do Google ou da Microsoft ao visitar outro site. Como resultado, ele será carregado a partir do cache quando eles visitam seu site, o que leva a tempos de carregamento mais rápido
AminM
Você não deve usar a Microsoft ou o Google. Use MaxCDN. Muito mais probabilidade de obter sucesso cache, que é a coisa mais importante aqui blog.jquery.com/2014/01/14/...
0fnt

Respostas:

393

Isto é porque:

  1. Aumenta o paralelismo disponível.
    (A maioria dos navegadores baixa apenas 3 ou 4 arquivos por vez de qualquer site.)

  2. Aumenta a chance de ocorrer um acerto no cache.
    (À medida que mais sites seguem essa prática, mais usuários já têm o arquivo pronto.)

  3. Isso garante que a carga útil seja a menor possível.
    (O Google pode compactar previamente o arquivo em uma ampla variedade de formatos (como GZIP ou DEFLATE). Isso torna o tempo de download muito pequeno, porque é super compactado e não é compactado em tempo real.

  4. Reduz a quantidade de largura de banda usada pelo seu servidor.
    (O Google basicamente oferece largura de banda gratuita.)

  5. Ele garante que o usuário obtenha uma resposta geograficamente próxima.
    (O Google tem servidores em todo o mundo, diminuindo ainda mais a latência.)

  6. (Opcional) Eles manterão automaticamente seus scripts atualizados.
    (Se você gosta de "voar pelo lugar da calça", sempre pode usar a versão mais recente de qualquer script que eles oferecerem. Eles podem corrigir falhas de segurança, mas geralmente acabam com as coisas.)
John Gietzen
fonte
10
Eu amo como você continua apresentando mais e mais razões. +1 por isso sozinho.
Matchu
6. Os servidores do Google são provavelmente mais rápidos que o seu! Não tenho certeza se o ponto 3 é realmente relevante, pois qualquer um pode minificar tão bem quanto o Google. +1 para uma grande resposta :)
Paul Creasey
1
Eu sinto que o número 3 provavelmente tem mais a ver com gzip e similares, já que o jQuery já fornece uma versão reduzida.
Matchu 01/02/10
2
Deus todo mundo estava me atacando, eu só enviou as minhas ideias, e foi aceito, LOL
Farshad
1
@ farshad: Não estou atacando você, atacando a resposta aceita que não foi tão boa quanto a próxima resposta. É assim que as perguntas e respostas da comunidade funcionam. Tente formatar sua resposta um pouco mais profissionalmente da próxima vez e limitar suas críticas à pergunta ao tipo construtivo e útil.
Joel
58

Existem vários cenários em que você pode não querer usar o jQuery na CDN do Google:

  1. Quando você está construindo um aplicativo de intranet em que o servidor da web está hospedado na mesma rede que os clientes. Se você usar o CDN jQuery do Google, fará uma ligação para a Internet em vez de um servidor da rede local. Isso aumenta a largura de banda da sua organização e é mais lento.

  2. Quando você deseja executar seu aplicativo offline . (Bastante vinculado ao primeiro problema) Se você precisar trabalhar em um ambiente de desenvolvimento (gerenciado, por exemplo, com o Bower ), poderá ser necessário fazer seu aplicativo funcionar sem nenhuma conexão com a Internet (por exemplo: em um trem :)

  3. Quando você precisar personalizá-lo . Por exemplo, se você usar o Grunt para criar a biblioteca, a fim de usar apenas determinados módulos ou definir o nome da AMD

  4. Quando você está servindo páginas sobre SSL que requerem jQuery. Você deve exibir o JavaScript sobre SSL e sua página para evitar problemas e avisos de segurança.

Além disso, a Microsoft hospeda o jQuery em sua CDN. Essa é outra opção comparável ao uso do jQuery hospedado no Google.

Lance Fisher
fonte
35
Apenas um FYI que você pode usar os servidores do Google para fornecer uma versão SSL das bibliotecas javascript hospedadas. o ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js funciona.
Aaron Wagner
É bom saber, Aaron. Obrigado.
Lance Fisher
3
+1 por mencionar a Microsoft. Google recebe maneira muito crédito imo.
Barry
7
Também para sua informação: Esquemas de hiperlinks relativos, como src="//ajax.googleapis.com/...", funcionam.
John Gietzen
3
E também considere cndjs
Bryce
29

Este estudo de TJ VanToll me convenceu de que é melhor concatenar o jQuery com outros scripts, em vez de carregá-lo de uma CDN.

O motivo é a latência envolvida na busca do jQuery em dispositivos móveis:

"Em 2012, o tempo médio de RTT em uma rede móvel nos Estados Unidos era de 344ms. E esses 344ms se aplicam não apenas a todas as solicitações HTTP - das quais a página da Web média agora faz 93 -, mas também a todas as pesquisas de DNS e conexões TCP ... Enquanto as RTTs médias estão melhorando, há apenas pequenos ganhos adicionais a serem obtidos, já que as redes atuais estão dentro de um pequeno fator do limite teórico ditado pela física ".

Ele também cita esta postagem de Steve Souders, que mostra por que é improvável que você obtenha o benefício de cache usando uma CDN:

"Devido à fragmentação nos provedores de CDN, nas versões jQuery e no uso do protocolo (http vs. https), as chances de obter um acerto no cache da CDN são surpreendentemente baixas - e o download de um domínio externo tem o potencial de executar não apenas um, mas três viagens de ida e volta (uma pesquisa de DNS, uma conexão TCP e um HTTP GET). "

cantera
fonte
3
Isso não é mais verdade para HTTP2 e SPDY. Hoje você pode hospedar todos os seus recursos externos em uma CDN como o Cdnjs.com ou algo assim e todos os arquivos serão baixados usando a mesma solicitação. Isso é basicamente o mesmo que concatenar.
Ricardo Polo Jaramillo
13

O maior benefício é o armazenamento em cache. A teoria é que, se um visitante visitou um site que estava carregando suas bibliotecas JavaScript, digamos jQuery, por exemplo, a partir da CDN do Google, quando visitam seu site, a biblioteca já está no cache do navegador do usuário e não precisará ser baixada novamente. . Isso parece ótimo em teoria.

Os benefícios compartilhados aqui e em outros lugares são todos teóricos. Acabei de encontrar uma análise detalhada do uso de uma CDN e se ela oferece os benefícios de desempenho esperados. http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

Matt Moor
fonte
Esta resposta é grosseiramente subestimada. Ele fornece os "contras" igualmente válidos para a resposta aceita "pro" acima.
Thomas Wana
@ user239558 O link não estaria morto se o autor do estudo tivesse realmente usado uma CDN ;-) O erro é: [function.require]: falha ao abrir o fluxo: esse arquivo ou diretório não existe em / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain
O artigo não está bem pensado. Ele diz que as bibliotecas jQuery menos comuns são atendidas pelo CDN do Google em cerca de 0,5% de todas as páginas. Durante uma sessão de navegação geral, visito muitas páginas, especialmente aqueles pequenos links para sites como, por exemplo, o que o hospeda. Ou sites de blog. Eu visito facilmente 30 sites exclusivos por dia, depois de uma semana as chances de não armazená-lo em cache são muito pequenas. Embora possa não ser armazenado em cache para todos os seus usuários, as pessoas que fazem uso extensivo da Internet quase sempre os armazenam em cache, porque visitam muito mais de um domínio único no total.
Aidiakapi
8

Um dos principais motivos para NÃO permitir que o Google hospede seu jQuery, que muitas pessoas não pensam, é que ele não será baixado se você estiver na China. Está bloqueado junto com muitos outros scripts, fontes, etc ... hospedados pelas CDNs do Google. Se você precisar alcançar um público chinês, é melhor sempre usar um fallback hospedado em seu próprio servidor. Google APIS bloqueado na China

Joshua Maddox
fonte
Não concordo @tmthydvnprt. A pergunta é opinativa, então é aí que está a maior parte da falha, mas isso responde à pergunta.
Adeus StackExchange
1
Eu vim aqui para a mesma coisa. Se os usuários estão na China, quase tudo do Google é bloqueado pelo grande firewall. No entanto, isso provavelmente não é um problema, já que muitas pessoas na China usam um serviço VPN, e você provavelmente não deseja atingir o mercado chinês de qualquer maneira.
Justin
0

Algumas boas respostas aqui para "Por que você deveria ..." e "Por que você não deveria ..."

Eu simplesmente quero adicionar uma lista de alternativas ao Google se você deseja carregar o jQuery a partir de uma CDN.

Mas, para resumir, você está basicamente melhorando o desempenho geral do site / aplicativo.

EdwardM
fonte
0

Ao designar a CDN com um técnico de serviço, você pode fazer o download da CDN uma vez na vida útil do cliente e nem sempre que atualizar seu código.

Oscar Gardiazabal
fonte