Biblioteca hospedada no Google jQuery - é bom?

14

Existe algum benefício REAL de usar a biblioteca hospedada no Google jQuery? Ou devemos apenas fazer o download para o nosso servidor?

Quais são suas opiniões sobre isso?

Leo
fonte
1
Uma simples busca no Google woul ter fornecido a resposta ...
Francisco Presencia

Respostas:

18

Há dois grandes benefícios em usar uma CDN externa, como o Google, para hospedar o jQuery:

  1. É mais rápido. Certamente será mais rápido que o seu site e provavelmente mais rápido que qualquer CDN que você mesmo tenha configurado.
  2. Já pode estar em cache . Muitos sites também fazem referência ao jQuery na CDN do Google; portanto, se eles visitaram outro site antes do seu, nem precisam fazer o download.

Possíveis desvantagens:

  1. O domínio pode estar bloqueado (isso é bastante comum em lugares como a China). Você pode resolver isso usando um fallback local ( veja aqui como ).
  2. A fragmentação dos números de versão é bastante alta; portanto, os visitantes do seu site podem ter muitas versões diferentes armazenadas em cache, mas não a que você referenciou ( veja aqui algumas estatísticas recentes ). Este é apenas um problema no carregamento da primeira página.
DisgruntledGoat
fonte
3
Você pode postar uma referência sobre como configurar um fallback local?
Stephen Ostermiller
1
Como Zistolen aponta antes, outro benefício é que ele fará o download em paralelo aos outros sites dos seus sites. Você pode adicionar isso também a essa ótima resposta.
Nathiesbrecht #
Isso é um pouco enganador. Os navegadores fazem o download de ativos em paralelo, independentemente de onde eles estão hospedados, mas há um limite para o número de itens que serão baixados do mesmo host ao mesmo tempo.
Tim fonte
Ignorei que, honestamente, não está aqui nem ali - o arquivo pode ser baixado em paralelo, mas também é uma pesquisa de DNS adicional. Além disso, qualquer diferença de tempo que qualquer uma dessas marcas seja insignificante.
usar o seguinte
Justo. Mas em conexões rápidas, isso não pode resultar em um tempo total de carregamento mais rápido, já que mais "tubo" pode ser usado?
Nathangiesbrecht 02/04
11

Outra desvantagem:

O uso de uma CDN permite que o operador da CDN rastreie os visitantes do site. É por isso que eles não custam dinheiro.

Jost
fonte
Acompanhamento seguro, mas não de visitantes: o CDN do jquery e o jquery do Google estão hospedados em domínios que não definem ou usam cookies (provavelmente esta também é uma otimização de desempenho) e não há informações realmente identificáveis ​​na solicitação. O provedor CDN pode ter uma idéia sobre endereços IP e algumas estatísticas sobre sequências e referências de agentes de usuários. Isso provavelmente é valioso, mas não é, por si só, um enorme risco à privacidade (se esses registros estiverem correlacionados com outro banco de dados - digamos, anúncios personalizados veiculados em momentos semelhantes -, talvez seja um meio de rastreamento).
Eamon Nerbonne
Eu acho que pode ser um dado adquirido (no caso do google), que os dados estão correlacionados com outros bancos de dados, já que quase todo mundo usa o google para pesquisar o tempo todo. A mesma coisa com as fontes do google: recentemente tentei hospedar as fontes em um servidor, mas descobri que é muito difícil fazer isso. O Google não o proíbe (código aberto), mas eles não fornecem os arquivos de maneira pronta para uso: você pode compilá-los você mesmo (mas não há makefile) ou forjar solicitações para o arquivo servidores usados ​​para entregá-los normalmente. Ambos não são factíveis para um não técnico.
Jost
Possivelmente. Como não tenho informações privilegiadas, é difícil dizer com certeza. No entanto, tenho certeza de que haverá erros e lacunas significativas: a maioria dos lugares que uso a Internet tem NAT e vários têm alguns usuários com máquinas semelhantes (provavelmente cadeias de caracteres idênticas da UA) - seria impossível saber quais pedido vem de quem. E é claro que, com os botões adsense e de compartilhamento social, eles podem ter um meio mais confiável quase sempre, para que eu possa imaginar que eles não se incomodam. Quanto às fontes - eu as baixei várias vezes, então não entendo direito o que você quer dizer com isso ser difícil?
Eamon Nerbonne
Para deixar claro: eu estou supondo que a maioria das visitas ao site que você faz pode e será rastreada pelos grandes colecionadores de estatísticas em virtude de botões de compartilhamento social (bastante difundidos) e anúncios, que estão em quase todos os lugares. Então, eu me pergunto o quão valiosa é a informação possivelmente enganosa dos pedidos de js em cache pesado - aposto que não muito, portanto presumo que eles não se incomodem em tentar identificar pessoalmente as pessoas que usam JS servidas por CDN.
Eamon Nerbonne
Não é tão armazenado em cache como se poderia pensar - ao incorporar fontes usando o modo que o google prefere, inserindo um link CSS em fonts.googleapis.com, cada visualização de página abre uma conexão com o google (você pode vê-las no Firebug). Não importa se armazenado em cache ou não. Quanto ao download: Você pode me indicar um local onde eu possa baixar as fontes nos formatos eot, woff, ttf e svg de alta qualidade (mesmas versões que o google oferece, sem conversores externos)?
Jost
3

Usar CDN (s) para dividir suas dependências em muitos servidores como este, em essência, representa uma troca entre largura de banda e latência, supondo que você se preocupe apenas com o desempenho.

Por acaso, suponho que a alternativa não seja simplesmente hospedá-la localmente, mas concatená-la com uma solicitação local diferente - geralmente não há boas razões para não concatenar quando você puder.

Se a largura de banda for infinita, é melhor você NÃO compartilhar, porque você será tão lento quanto o serviço mais lento - já que as latências não são perfeitamente previsíveis, com serviços suficientes, mesmo que sejam rápidos, você só precisa de um pouco de má sorte para causar um carregamento lento da página.

Se a latência for 0, a distribuição de sua carga por muitos servidores poderá melhorar a largura de banda utilizando muitos servidores (o que não é útil, pois provavelmente as limitações de largura de banda estão próximas dos clientes, não dos servidores), mas, mais importante, pode reduzir a quantidade de dados transmitidos ligeiramente aumentando a eficácia do armazenamento em cache.

Depende do seu cenário, mas geralmente espero que a latência seja mais um problema do que a largura de banda, a menos que seus scripts sejam incrivelmente grandes (o que o jquery não é). Nesse ponto, geralmente é mais rápido hospedar o jquery como parte de um arquivo local concatenado.

Os motivos para não hospedar localmente são, por exemplo, quando você paga pela largura de banda, ou está hospedando em um servidor lento (sua conexão com o cliente está com gargalos do seu lado, não do cliente), ou você sabe que seus clientes terão uma largura de banda muito baixa (dsl ou modems low-end, digamos - mobile tende a ter mais problemas de latência do que problemas de largura de banda) ou seus clientes pagam por largura de banda (por exemplo, mobile) e os scripts são uma parte tão perceptível daquilo que o cache menor ganha mais importância (provavelmente não )

De qualquer forma: muito mais relevante será se você cobriu o básico primeiro; cabeçalhos de cache, concatenação, minificação e gzipping apropriados (de preferência com uma alta taxa de compactação). E aqui está o ponto crucial: se você NÃO fizer isso, pelo menos a CDN fará, então isso é vitória ...

TL; DR: se você tiver concatenação + minificação + gzip + cache em cache, a veiculação de pequenos scripts localmente é mais rápida que a partir de uma CDN, apesar do melhor desempenho da CDN - mas apenas se você tiver feito sua lição de casa, possivelmente não na primeira página carga e, definitivamente, há exceções a esta regra.

Eamon Nerbonne
fonte
Aliás, existem algumas aparas de bytes obtidas usando apenas uma solicitação: cabeçalhos sozinhos chegam a quase 1kb, o que em uma carga útil de 28k não é nada. O gzip funciona melhor com mais contexto, o que economiza mais 0,5k. Os custos indiretos de TCP, DNS e HTTPS podem facilmente adicionar um KB aqui ou ali e, pior ainda, RTTs. É por isso que, para arquivos pequenos como esse, uma CDN não é tão rápida quanto você imagina.
Eamon Nerbonne
1

O uso da biblioteca hospedada jQuery pelo Google permite que sua página seja carregada mais rapidamente. De fato, a biblioteca é carregada ao mesmo tempo da sua página e não depois.

Zistoloen
fonte
Mas como isso afeta o carregamento da página?
Leo
1
Bibliotecas locais também são carregadas enquanto a página é carregada - Nos dois casos, o download do ativo é iniciado quando o navegador (moderno) vê o trecho de código que aciona o download, o que geralmente acontece antes do download do documento inteiro. Veja esta captura de tela do Firebug como exemplo
Jost