O CDN da Google, jQuery e algumas implicações
Ultimamente tenho-me sentido tentado em usar a Content Delivery Network (CDN) da Google para servir algumas das bibliotecas javascript que utilizo, nomeadamente o jQuery e JQuery UI.
As vantagens de utilizar o CDN da Google são óbvias, os servidores deles são rápidos bem rápidos e outra vantagem prende-se com o facto se houver muita gente a utilizar o CDN deles provavelmente quando um utilizador chegar ao meu site o jQuery servido pelo Google já está em cache e ai o tempo de download é zero (ou muito perto disso pelo menos) entre outras vantagens que no final de contas resultam num carregamento mais rápido da pagina e uma redução na carga sobre a nossa maquina.
Contudo não há bela sem senão e neste caso o senão é que estamos a confiar a terceiros para nos servirem um conteúdo directamente no nosso site (e no caso de javascript pode ser algo bastante perigoso), outro senão é o que acontece ao nosso site se o Google tiver problemas de rede e os ficheiros ficarem de alguma forma indisponíveis?
Pois bem, quanto ao problema de segurança que representa confiar na Google para servir os nossos ficheiros isto é algo com que teremos que viver se quisermos utilizar qualquer CDN e para mais a maioria de nós já confia na Google para servir o javascript do Google Analytics.
Quanto para o caso da rede da Google falhar no que diz respeito ao jQuery a solução é bastante simples.
Se tivermos em conta que um browser executa de ordem sequencial o carregamento de todo o javascript e sabendo que o jQuery depois de carregado disponibiliza um objecto (variável) com o nome de jQuery facilmente podemos construir algo que tenta carregar o jQuery a partir do CDN da Google e se depois o objecto jQuery não estiver disponível carrega então o jQuery a partir do repositorio do nosso site.
'); }
Como podemos ver pelo código em cima é bastante simples aproveitar-nos das vantagem da utilização do CDN da Google e também conseguimos nos proteger contra qualquer problema de disponibilidade acabando por servir a nossa versão local em caso de algum problema.
Não funciona
@Ricardo
Olá Ricardo, o post já foi actualizado o problema estava na forma como efectuava a verificação pelo objecto do jQuery mas o assunto já está resolvido.