¿Por qué debería usar el CDN de Google para jQuery?

169

Esto puede ser obvio para algunos, pero me he estado preguntando: ¿por qué debería depender del servidor de Google para alojar jQuery para mi sitio?

¿Es solo porque se carga más rápido de esta manera?

Yvette
fuente
1
Relacionado: stackoverflow.com/questions/547384/…
Jørn Schou-Rode
2
Nadie menciona cuál era la política de Google sobre el enlace directo a sus archivos JS (dado que el enlace directo generalmente está mal visto), así que aquí está la URL donde Google menciona que esto está bien y más sobre las bibliotecas que alojan: code.google.com/apis/ajaxlibs/ documentation / index.html
Loftx
1
Muchos usuarios ya han descargado jQuery de Google o Microsoft cuando visitan otro sitio. Como resultado, se carga desde la memoria caché cuando visitan su sitio, lo que conduce a la descarga más rápida
AminM
No debe usar Microsoft o Google. Utiliza MaxCDN. Es mucho más probable que obtenga un caché, que es lo más importante aquí blog.jquery.com/2014/01/14/…
0fnt

Respuestas:

393

Esto es porque:

  1. Aumenta el paralelismo disponible.
    (La mayoría de los navegadores solo descargarán 3 o 4 archivos a la vez desde un sitio determinado).

  2. Aumenta la posibilidad de que haya un golpe de caché.
    (A medida que más sitios siguen esta práctica, más usuarios ya tienen el archivo listo).

  3. Asegura que la carga útil sea lo más pequeña posible.
    (Google puede precomprimir el archivo en una amplia gama de formatos (como GZIP o DEFLATE). Esto hace que el tiempo de descarga sea muy pequeño, porque está súper comprimido y no está comprimido sobre la marcha).

  4. Reduce la cantidad de ancho de banda utilizado por su servidor.
    (Google básicamente ofrece ancho de banda gratuito).

  5. Asegura que el usuario obtendrá una respuesta geográficamente cercana.
    (Google tiene servidores en todo el mundo, lo que disminuye aún más la latencia).

  6. (Opcional) Mantendrán sus scripts actualizados automáticamente.
    (Si te gusta "volar por el asiento de tus pantalones", siempre puedes usar la última versión de cualquier script que ofrezcan. Esto podría solucionar los agujeros de seguridad, pero en general solo rompe tus cosas).
John Gietzen
fuente
10
Me encanta cómo se te ocurren más y más razones. +1 solo por eso.
Matchu
6. ¡Los servidores de Google son probablemente más rápidos que los tuyos! No estoy seguro de que el punto 3 sea realmente relevante, ya que cualquiera puede minificar tan bien como Google. +1 para una gran respuesta :)
Paul Creasey
1
Siento que el # 3 probablemente tenga más que ver con gzip y similares, ya que jQuery ya ofrece una versión reducida.
Matchu
2
Dios, todo el mundo me estaba atacando, acabo de enviar mis ideas, y fui aceptado, LOL
Farshad
1
@farshad: No te ataco, ataco la respuesta aceptada que no fue tan buena como la siguiente respuesta. Así es como funcionan las preguntas y respuestas de la comunidad. Intente formatear su respuesta un poco más profesionalmente la próxima vez, y limite su crítica de la pregunta al tipo útil y constructivo.
Joel
58

Hay varios escenarios en los que es posible que no desee utilizar jQuery del CDN de Google:

  1. Cuando está creando una aplicación de intranet donde el servidor web está alojado en la misma red que los clientes. Si usa el CDN jQuery de Google, realizará una llamada a Internet en lugar de un servidor web en la red local. Esto aumenta el ancho de banda para su organización y es más lento.

  2. Cuando quieras ejecutar tu aplicación sin conexión . (Muy relacionado con el primer problema) Si necesita trabajar en un entorno de desarrollo (administrado, por ejemplo, con Bower ), es posible que deba hacer que su aplicación funcione sin conexión a Internet (es decir, en un tren :)

  3. Cuando necesites personalizarlo . Por ejemplo, si usa Grunt para construir la biblioteca para usar solo ciertos módulos o establecer el nombre de AMD

  4. Cuando está sirviendo páginas sobre SSL que requieren jQuery. Debe servir el JavaScript sobre SSL así como su página para evitar problemas de seguridad y advertencias.

Además, Microsoft aloja jQuery en su CDN. Esa es otra opción comparable al uso de jQuery alojado por Google.

Lance Fisher
fuente
35
Solo para su información, puede usar los servidores de Google para ofrecer una versión SSL de las bibliotecas javascript alojadas. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js funciona.
Aaron Wagner
Es bueno saberlo, Aaron. Gracias.
Lance Fisher
3
+1 por mencionar a Microsoft. Google obtiene manera demasiado crédito imo.
Sí Barry
77
También para su información: Esquema de hipervínculos relativos, como src="//ajax.googleapis.com/...", trabajo.
John Gietzen
3
Y también considere cndjs
Bryce
29

Este estudio de TJ VanToll me convenció de que es mejor concatenar jQuery con otros scripts en lugar de cargarlo desde un CDN.

La razón es la latencia involucrada en la obtención de jQuery en dispositivos móviles:

"En 2012, el tiempo RTT promedio en una red móvil en los Estados Unidos fue de 344 ms. Y ese 344 ms se aplica no solo a todas las solicitudes HTTP, que la página web promedio ahora hace 93, sino también a todas las búsquedas de DNS y conexiones TCP ... Si bien los RTT promedio están mejorando, solo se pueden obtener pequeñas ganancias adicionales, ya que las redes actuales están dentro de un pequeño factor del límite teórico dictado por la física ".

También cita esta publicación de Steve Souders que muestra por qué es poco probable que obtenga el beneficio de almacenamiento en caché al usar un CDN:

"Debido a la fragmentación en los proveedores de CDN, las versiones de jQuery y el uso del protocolo (http vs. https), las posibilidades de obtener un impacto de caché de CDN son sorprendentemente bajas, y la descarga desde un dominio externo tiene el potencial de realizar no uno, sino tres viajes de ida y vuelta (una búsqueda de DNS, una conexión TCP y un HTTP GET) ".

cantera
fuente
3
Esto ya no es cierto para HTTP2 y SPDY. Hoy puede alojar todos sus recursos externos en un CDN como Cdnjs.com o algo así y todos los archivos se descargarán utilizando la misma solicitud. Eso es básicamente lo mismo que concatenar.
Ricardo Polo Jaramillo
13

El mayor beneficio es el almacenamiento en caché. La teoría es que si un visitante visitó un sitio que estaba cargando sus bibliotecas de JavaScript, por ejemplo, jQuery, por ejemplo, de Google CDN, cuando visitan su sitio web, la biblioteca ya está en la memoria caché del navegador de ese usuario y no tendrá que volver a descargarla . Esto suena muy bien en teoría.

Los beneficios que se comparten aquí y en otros lugares son todos teóricos. Acabo de encontrar un análisis en profundidad sobre el uso de una CDN y si proporciona los beneficios de rendimiento esperados. http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

Matt Moor
fuente
Esta respuesta está muy subestimada. Proporciona los "contras" igualmente válidos a la respuesta aceptada "pro" anterior.
Thomas Wana
@ user239558 El enlace no estaría muerto si el autor del estudio hubiera utilizado realmente un CDN ;-) El error es: [function.require]: no se pudo abrir la secuencia: No existe dicho archivo o directorio en / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain
El artículo no está bien pensado. Dice que las bibliotecas jQuery menos comunes son atendidas por Google CDN en aproximadamente el 0.5% de todas las páginas. Durante una sesión de navegación general, visito muchas páginas, especialmente esos pequeños enlaces a sitios como, por ejemplo, el que lo aloja. O sitios de blog. Visito fácilmente 30 sitios únicos al día, después de una semana, las posibilidades de no tenerlo en caché son bastante escasas. Aunque es posible que no se almacene en caché para todos sus usuarios, las personas que hacen un uso intensivo de Internet casi siempre los almacenan en caché, ya que visitan más de 1 dominio único en total.
Aidiakapi
8

Una razón importante para NO permitir que Google aloje su jQuery, algo en lo que muchas personas no piensan, es que no se descargará si se encuentra en China. Está bloqueado junto con muchos otros scripts, fuentes, etc. alojados por Google CDN. Si necesita llegar a una audiencia china, lo mejor es usar siempre una reserva alojada en su propio servidor. Google APIS bloqueado en China

Joshua Maddox
fuente
No estoy de acuerdo @tmthydvnprt. La pregunta es obvia, así que ahí es donde comienza la mayor parte de la falla, pero esto responde a la pregunta.
Goodbye StackExchange
1
Vine aquí para hacer lo mismo. Si los usuarios están en China, casi todo, desde Google, está bloqueado por el gran firewall. Sin embargo, esto probablemente no sea un problema ya que muchas personas en China usan un servicio VPN, y de todos modos es probable que no desee apuntar al mercado chino.
Justin
0

Algunas buenas respuestas aquí a "Por qué deberías ..." y "Por qué no deberías ..."

Simplemente quiero agregar una lista de alternativas a Google si desea cargar jQuery desde un CDN.

Pero para resumir, básicamente está mejorando el rendimiento general de su sitio web / aplicación.

EdwardM
fuente
0

Use CDN con un Service Worker, puede descargar el CDN una vez en la vida del cliente y no cada vez que actualice su código.

Oscar Gardiazabal
fuente