Benefícios vs. armadilhas de hospedar jQuery localmente [fechado]

85

No momento, estamos puxando as bibliotecas jQuery e jQueryUI (e jQueryUI CSS) do Google CDN. Gosto disso porque posso ligar google.load("jquery", "1");
e usar o jQuery 1.xx mais recente.

Agora devo puxar as bibliotecas localmente por causa da segurança.

Estou feliz em usá-los localmente, mas estou me perguntando quais são alguns dos outros benefícios e armadilhas a serem observados.

orolo
fonte
6
de que problemas de segurança estamos falando?
Ascherer
Eu não perguntei. Acho que não é tanto segurança, mas tentando controlar a largura de banda através do firewall do gmail, etc.
orolo

Respostas:

109

O principal benefício de tê-los em um CDN é que os arquivos podem ser baixados paralelamente aos arquivos baixados do seu próprio site. Isso reduz a latência em todas as páginas. Portanto, o outro lado disso é uma armadilha de hospedar localmente - latência aumentada . A principal razão para isso é que os navegadores são limitados no número de conexões que podem fazer ao mesmo tempo para o mesmo domínio da web. No IE6, o padrão era 2 conexões simultâneas ao mesmo domínio - compartilhadas entre todas as janelas abertas do IE !! No IE8 + ele melhorou, padronizando para 6, que está em linha com o FF / Chrome, mas ainda assim, se você tiver muitas imagens e não estiver usando sprites, terá latência pesada.

Usando um CDN, eu sempre definiria a versão da biblioteca explicitamente, em vez de obter a versão mais recente. Isso reduz o risco de novas versões violarem seu código. Não é muito provável com jQuery, mas é possível.

O outro benefício principal de usar um CDN é a redução do tráfego em seu site . Se você paga por GB ou está em um servidor virtual com recursos limitados, pode descobrir que o desempenho geral do site aumenta e os custos de hospedagem diminuem quando você transfere parte do seu conteúdo para um CDN público.

Certifique-se de ler também a outra resposta a esta pergunta de @Xaver. Este é um truque muito bom

Daniel Dyson
fonte
5
Outro benefício de definir a versão da biblioteca explicitamente é que o Google oferece um tempo de cache mais longo. Por exemplo, especificar 1.9.1 fornecerá um tempo de vida mais longo do cache do que apenas solicitar 1.9 (já que uma nova versão do jQuery 1.9 pode ser lançada, mas 1.9.1 sempre será o mesmo).
Barry de
uhhh - revaxarts ? Não vejo essa resposta, nem atual nem excluída. Qual é o "truque muito bom"?
ashleedawg
145

Sempre uso o CDN (Content Delivery Network) do Google. Mas apenas no caso de estar offline:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>

Pegue o jQuery do CDN do Google e use o local, se necessário

Editar : se você não precisa de suporte para IE6 e seu site tem uso parcial de https, você também pode remover o http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
Xaver
fonte
4
Crédito para a comunidade: stackoverflow.com/questions/1014203/…
oucil
25
XVIDEOS usa esta solução agora: P
Shougo Makishima
Devo estar faltando algo aqui ... Esta abordagem não pressupõe que o jQuery carregado com o CDN será carregado e interpretado antes que a próxima linha ( !window.jQuery...) seja interpretada? <script>as tags são processadas de forma assíncrona, certo?
rinogo
2
<script>as tags são processadas de forma síncrona! Na segunda linha o jQuery já deve estar carregado, mas caso contrário, injetamos algum JS para carregá-lo localmente. O document.writenunca será executado se jQuery já existir.
Xaver
24

Outros cobriram os benefícios. Armadilhas:

  • Se você incluir apenas conteúdo de seu próprio servidor, esse servidor precisa estar em execução - e não bloqueado por firewalls, etc - para fazer seu site funcionar. Puxe o script de um terceiro e agora são dois servidores que precisam estar rodando e desbloqueados para fazer seu site funcionar.

  • Qualquer site de onde você extrai <script>pode controlar completamente a experiência do usuário em seu site. Se o Google estivesse se sentindo mal, poderia colocar algo em sua cópia do jQuery para registrar seus pressionamentos de tecla, roubar informações pessoais da página em que você estava para vincular ao banco de dados de rastreamento da web, fazer você postar "Eu amo o Google!" comentários a todos os formulários e assim por diante.

O Google provavelmente não fará isso, mas é um fator que está fora de seu controle e, certamente, é algo com que se preocupar com outros serviços de hospedagem de scripts. Já houve incidentes em que scripts de estatísticas foram comprometidos com carregadores de malware.

Antes de incluir qualquer script de terceiros - mesmo em uma única página do seu site - você deve confiar 100% neles com todas as funcionalidades acessíveis ao usuário visíveis naquele nome de host (incluindo funções de administrador voltadas para a web).

bobince
fonte
21
O Google não faria isso ... EU AMO O GOOGLE ... faria? :-p
JasCav
1
Excelentes pontos sobre questões de segurança.
Naltroc
1
Pontos positivos: nunca pensei em como um script CDN remoto poderia ser hackeado e puxado para dentro do meu site. Provavelmente não é comum para grandes bibliotecas como jQuery, jQueryUI, Boostrap, etc, mas, assim como observado, bibliotecas menores e menos suportadas podem ser vítimas, especialmente se não forem mantidas atualizadas. Pontos
positivos
14

Google CDN:

  • cache, bom para desempenho, mais usuários provavelmente já o possuem e ele baixa em paralelo
  • se alguma vez, ele proibirá que o cdn caia. você está ferrado.
  • se uma nova versão quebrar seus plug-ins ou site existentes, você saberá disso possivelmente tarde demais

Localmente:

  • o desenvolvimento sem estar conectado à rede é possível
  • ainda pode obter alguns benefícios de desempenho com gzip, além de minimizar
Moin Zaman
fonte
5
no entanto, o jquery u load do cdn do Google é reduzido. Outra vantagem de usar um cdn é que é mais limpo para sua estrutura de diretório :)
Ascherer
if a new version breaks your existing plugins or site, you'll know about it possibly too latevocê pode especificar a versão no link CDN, para evitar isso.
Adam,
13

Eu prefiro usar minha versão local, porque não tenho controle sobre o que eles irão fornecer. Por exemplo, não quero que meus usuários sejam afetados pelo google-analytics ou algo semelhante, porque este é um problema legal no meu país.

Dr.Molle
fonte
9

Benefícios: (especificamente para CDN do Google)

  1. Downloads em paralelo com seus arquivos. Outras respostas tratam disso melhor
  2. Os servidores do Google provavelmente serão capazes de entregar fisicamente o conteúdo mais rápido
  3. Bibliotecas e estruturas comuns podem já estar na máquina do usuário, pois o cache HTTP para um CDN é universal em todos os sites
  4. Sua largura de banda não teria que ir para servir grandes arquivos de biblioteca
Praveen Prasad
fonte
2

Praticamente de todas as maneiras que você olha para as coisas, usar o CDN do Google é uma coisa boa.

O desempenho será melhorado (embora marginalmente, a menos que seu site esteja realmente ocupado), e a quantidade de dados que seus servidores precisam transmitir cairá (embora jQuery não seja exatamente uma coisa enorme para baixar), etc.

O único motivo pelo qual você não gostaria de usá-lo é não confiar no Google. Ao usá-lo, você está efetivamente dando ao Google uma janela adicional de informações sobre o perfil de tráfego do seu site, incluindo o conhecimento de URLs que, de outra forma, você não deseja tornar públicos (por exemplo, áreas seguras do seu site).

Se você é paranóico com relação à segurança, isso pode ser o suficiente para persuadi-lo a não usá-los (afinal, hospedar você mesmo não vai exatamente desacelerar seu site a um rastreamento), mas em geral a maioria das pessoas teria uma visão pragmática que o Google já sabe o suficiente sobre o site deles, de modo que adicionar isso não fará muita diferença.

Spudley
fonte
1

Provavelmente estou em minoria hoje em dia, mas eu diria que você não quer usar o CDN a menos que seja realmente necessário. Os principais fatores para começar a usá-lo são:

  • Usuários geográficos cruzados. Se você hospedar seu site nos EUA, mas tiver uma quantidade visível de usuários europeus, o CDN melhorará o tempo de carregamento.
  • Grande quantidade de usuários e \ ou grande conteúdo, então um servidor principal não é mais suficiente. Pode-se pensar em qualquer site de vídeo pornográfico (ou Netflix, se quiser). O fluxo de vídeo é uma carga pesada, com o CDN seria muito menos carga no servidor principal.

Mas ... a questão é que esses pontos não são realmente aplicáveis ​​a 90% dos sites do mundo. Aposto que você não é o Facebook com milhões de usuários online ao redor do globo, você não é o Pornhub com centenas de GB transferidos a cada segundo.

Se seu site é direcionado a usuários em sua cidade / país e a capacidade de um servidor é suficiente para a quantidade de usuários que você tem - por que você iria querer um CDN? É mais rápido para os usuários em sua cidade e mais simples para você buscar tudo localmente em seu servidor principal.


Era mais sobre CDNs em geral, agora deixe-me chegar mais perto da questão real sobre jQuery ou qualquer outra biblioteca.

Se você deseja que seu site permaneça acessível e funcionando sem manutenção por mais de um ano, digamos - coloque-o localmente. As bibliotecas hoje em dia estão sendo atualizadas em um ritmo louco que você provavelmente não quer seguir. E versões antigas estão sendo excluídas eventualmente. Além disso, a biblioteca inteira pode morrer (embora provavelmente não se aplique ao jQuery).

De minha experiência recente - atualizei o TinyMCE no site que mantenho de 3.xx (datado de 2012) a 5.xx (datado de primavera de 2019). Este site funcionou por 7 (sete!) Anos sem nenhuma manutenção nesta parte da lógica. Não havia um conceito de "minimização" naquela época e os CDNs não eram tão comuns como agora. Mas mesmo que fossem comuns - você nunca sabe o que acontecerá em 3-5-10 anos a partir de agora. Normalmente você quer que seu site permaneça vivo mesmo sem você mantê-lo, não é? No entanto, se você puxar o jQuery do CDN hoje, esse link pode (e, provavelmente, vai) quebrar em 5 anos.

Uma solução com CDN E fallback para a versão local, conforme sugerido por @Xaver, pode ser um bom compromisso. Mas ... talvez apenas se livrar do link CDN? ;)

O padrinho
fonte
0

Para mim, realmente depende de quanto controle você deseja ter. Se você é como eu e precisa se desenvolver no host local ao trabalhar e viajar. Ter os arquivos jquery locais é melhor do que hospedá-los no google ou em outro lugar.

WebGoonie
fonte