Beneficios frente a los inconvenientes de alojar jQuery localmente [cerrado]

85

Actualmente, estamos extrayendo las bibliotecas jQuery y jQueryUI (y jQueryUI CSS) de Google CDN. Me gusta esto porque puedo llamar google.load("jquery", "1");
y se usará la última versión de jQuery 1.xx.

Ahora debo extraer las bibliotecas localmente por motivos de seguridad.

Estoy feliz de sacarlos localmente, pero me pregunto cuáles son algunos de los otros beneficios y trampas a tener en cuenta.

orolo
fuente
5
¿De qué temas de seguridad estamos hablando?
Ascherer
Yo no pregunté. Supongo que no se trata tanto de seguridad como de intentar controlar el ancho de banda mediante el firewall de gmail, etc.
orolo

Respuestas:

109

El principal beneficio de tenerlos en un CDN es que los archivos se pueden descargar en paralelo a los archivos descargados de su propio sitio web. Esto reduce la latencia en cada página. Por lo tanto, la otra cara de la moneda es el problema del alojamiento local: mayor latencia . La razón principal de esto es que los navegadores están limitados en el número de conexiones que pueden realizar al mismo tiempo al mismo dominio web. En IE6, esto se estableció de forma predeterminada en 2 conexiones simultáneas al mismo dominio, ¡ compartido entre todas las ventanas abiertas de IE! En IE8 + mejoró, con un valor predeterminado de 6, que está en línea con FF / Chrome, pero aún así, si tiene muchas imágenes y no está usando sprites, experimentará una gran latencia.

Usando una CDN, siempre establecería la versión de la biblioteca explícitamente en lugar de obtener la última. Esto reduce el riesgo de que nuevas versiones rompan su código. No es muy probable con jQuery, pero es posible.

El otro beneficio principal de usar una CDN es la reducción del tráfico en su sitio . Si paga por GB o está en un servidor virtual con recursos limitados, es posible que observe que el rendimiento general del sitio aumenta y los costos de alojamiento se reducen cuando transfiere parte de su contenido a un CDN público.

Asegúrese de leer también la otra respuesta a esta pregunta de @Xaver. Este es un truco muy bueno

Daniel Dyson
fuente
5
Otro beneficio de configurar la versión de la biblioteca de forma explícita es que Google le da un tiempo de caché más largo.Por ejemplo, especificar 1.9.1 dará una vida útil de caché más larga que solo solicitar 1.9 (ya que una nueva versión de jQuery 1.9 podría lanzarse pero 1.9.1 siempre será lo mismo).
Barry
uhhh - ¿ revaxarts ? No veo tal respuesta, ni actual ni eliminada. ¿Cuál es el "truco muy bueno"?
ashleedawg
144

Siempre uso la CDN (Content Delivery Network) de Google. Pero en caso de que esté fuera de línea:

<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>

Toma jQuery de Google CDN y recurre a local si es necesario

Editar : si no necesita ser compatible con IE6 y su sitio tiene un uso parcial de https, también puede eliminar el http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
Xaver
fuente
4
Crédito a la comunidad: stackoverflow.com/questions/1014203/…
oucil
24
XVIDEOS usa esta solución ahora: P
Shougo Makishima
Debo estar perdiendo algo aquí ... ¿No asume este enfoque que el jQuery cargado en CDN se cargará y se interpretará antes de que se interprete la siguiente línea ( !window.jQuery...)? <script>Las etiquetas se procesan de forma asincrónica, ¿verdad?
rinogo
2
<script>¡las etiquetas se procesan sincrónicamente! En la segunda línea, jQuery ya debe estar cargado, pero por si acaso, si no, inyectamos algo de JS para cargarlo localmente. El document.writeno se ejecutará si jQuery existe ya.
Xaver
24

Otros han cubierto los beneficios. Escollos:

  • Si solo incluye contenido de su propio servidor, ese es un servidor que debe estar en ejecución y no bloqueado por firewalls, etc. Extraiga el script de un tercero y ahora son dos servidores que deben ejecutarse y desbloquearse para que su sitio funcione.

  • Cualquier sitio del que acceda <script>puede controlar por completo la experiencia del usuario en su sitio. Si Google se sintiera mal, podrían poner algo en su copia de jQuery para registrar sus pulsaciones de teclas, robar información personal de la página en la que se encuentra para vincularla a su base de datos de seguimiento web, hacer que publique "¡Me encanta Google!" comentarios a todos los formularios, y así sucesivamente.

Es probable que Google no vaya a hacer eso, pero es un factor que está fuera de su control y, ciertamente, algo de lo que preocuparse con otros servicios de alojamiento de scripts. Ha habido incidentes antes en los que los scripts de estadísticas se han visto comprometidos con los cargadores de malware.

Antes de incluir cualquier secuencia de comandos de un tercero, incluso en una sola página de su sitio, debe confiar al 100% en todas las funciones accesibles para el usuario visibles en ese nombre de host (incluidas las funciones de administración web).

bobince
fuente
21
Google no haría eso ... AMO GOOGLE ... ¿o sí? :-p
JasCav
1
Excelentes puntos en materia de seguridad.
Naltroc
1
Buenos puntos: nunca pensé en cómo un script CDN remoto podría ser pirateado y luego arrastrado hacia mi sitio. Probablemente no sea común para las principales bibliotecas como jQuery, jQueryUI, Boostrap, etc., pero como se señaló, las bibliotecas más pequeñas y menos compatibles podrían ser víctimas, especialmente si no se mantienen actualizadas. Buenos puntos +1
twknab
14

Google CDN:

  • almacenamiento en caché, bueno para el rendimiento, es probable que más usuarios ya lo tengan y se descarga en paralelo
  • si alguna vez, heaver forbid cdn baja. estás jodido.
  • si una nueva versión rompe sus complementos o sitio existentes, posiblemente lo sabrá demasiado tarde

En la zona:

  • el desarrollo sin estar conectado a la red es posible
  • aún puede obtener algunos beneficios de rendimiento mediante gzip, además de minificar
Moin Zaman
fuente
5
sin embargo, la carga de jquery u desde el cdn de Google está minimizada. Otra ventaja de usar un cdn es que es más limpio para la estructura de su directorio :)
Ascherer
if a new version breaks your existing plugins or site, you'll know about it possibly too latepuede especificar la versión en el enlace CDN, para evitar eso.
Adam
13

Prefiero usar mi versión local, porque no tengo control sobre lo que proporcionarán. Por ejemplo, no quiero que mis usuarios se vean afectados por google-analytics o algo similar, porque este es un problema legal en mi país.

Dr. Molle
fuente
9

Beneficios: (específicamente para CDN de Google)

  1. Descargas en paralelo con sus archivos. Otras respuestas abordan esto aún más
  2. Es probable que los servidores de Google puedan entregar físicamente el contenido más rápido
  3. Es posible que las bibliotecas y los marcos comunes ya estén en la máquina del usuario, ya que la caché HTTP para una CDN es universal en todos los sitios.
  4. Su ancho de banda no tendría que destinarse a servir archivos de biblioteca grandes
Praveen Prasad
fuente
2

Prácticamente de todas las formas en que lo mires, usar la CDN de Google es algo bueno.

El rendimiento mejorará (aunque de forma bastante marginal, a menos que su sitio esté realmente ocupado), y la cantidad de datos que deben transmitir sus servidores disminuirá (aunque jQuery no es exactamente una descarga enorme), etc.

La única razón por la que no querrías usarlo es si no confías en Google. Al usarlo, le está dando a Google una ventana adicional de información en el perfil de tráfico de su sitio, incluido el conocimiento de las URL que de otro modo no querría hacer públicas (por ejemplo, áreas seguras de su sitio).

Si está paranoico con la seguridad, esto puede ser suficiente para persuadirlo de que no los use (después de todo, alojarlo usted mismo no va a ralentizar su sitio exactamente), pero en general la mayoría de la gente adoptaría una visión pragmática que Google ya sabe lo suficiente sobre su sitio, por lo que agregarlo no hará mucha diferencia.

Spudley
fuente
1

Probablemente sea una minoría hoy en día, pero yo diría que no desea usar CDN a menos que realmente lo necesite. Los factores clave para empezar a utilizarlo son:

  • Usuarios geográficos cruzados. Si aloja su sitio web en los EE. UU. Pero tiene una cantidad visible de usuarios europeos, CDN mejorará el tiempo de carga.
  • Gran cantidad de usuarios y / o gran contenido, por lo que un servidor principal ya no es suficiente. Uno puede pensar en cualquier sitio web de videos porno (o Netflix, si lo desea). La transmisión de video es una carga pesada, con CDN sería mucho menos carga en el servidor principal.

Pero ... la cuestión es que estos puntos no son realmente aplicables al 90% de los sitios web del mundo. Apuesto a que no eres Facebook con millones de usuarios en línea en todo el mundo, no eres Pornhub con cientos de GB transferidos por segundo.

Si su sitio web está dirigido a usuarios de su ciudad / país y la capacidad de un servidor es suficiente para la cantidad de usuarios que tiene, ¿por qué querría una CDN? Es más rápido para sus usuarios en su ciudad y más simple para usted buscar todo de su servidor principal localmente.


Se trataba más de CDN en general, ahora permítanme estar más cerca de la pregunta real sobre jQuery o cualquier otra biblioteca.

Si desea que su sitio web permanezca accesible y funcione sin mantenimiento durante más de un año, digamos, colóquelo localmente. Las bibliotecas de hoy en día se están actualizando a un ritmo loco que probablemente no quieras seguir. Y las versiones antiguas se eliminarán eventualmente. Además, toda la biblioteca puede morir (aunque probablemente no sea aplicable a jQuery).

De mi experiencia reciente, actualicé TinyMCE en el sitio web que mantengo de 3.xx (con fecha de 2012) a 5.xx (con fecha de primavera de 2019). Este sitio web estuvo funcionando durante 7 (¡siete!) Años sin ningún mantenimiento en esta parte de la lógica. En ese entonces no existía el concepto de "minificación" y las CDN no eran tan comunes como ahora. Pero incluso si fueran comunes, nunca se sabe lo que sucederá en 3-5-10 años a partir de ahora. Por lo general, desea que su sitio web se mantenga vivo incluso sin que usted lo mantenga, ¿no es así? Sin embargo, si extrae jQuery de CDN hoy, este enlace puede (y probablemente se romperá) en 5 años.

La solución con CDN Y el respaldo a la versión local como sugirió @Xaver puede ser un buen compromiso. Pero ... ¿tal vez simplemente deshacerse del enlace CDN? ;)

El Padrino
fuente
0

Para mí, realmente depende de cuánto control desees tener. Si eres como yo y necesitas desarrollarte en un anfitrión local cuando trabajas y viajas. Tener los archivos jquery locales es mejor que tenerlos alojados en Google o en otro lugar.

WebGoonie
fuente