Hay un pequeño área gris entre ambos. Puedes configurar Discourse para que sirva recursos, incluidos los JS de temas y complementos, a través de un CDN. Así, incluso si tu complemento carga la biblioteca externa en /vendor, esta se cargará desde el CDN que configures en Discourse. Sin embargo, se trata de un CDN privado.
Dicho esto, no creo que te refieras a eso. Te refieres a servicios como https://cdnjs.com y https://www.jsdelivr.com, lo cual es un tema ligeramente diferente: un CDN público.
Servicios como cdnjs cuentan con una amplia red de servidores dedicados a este tipo de tareas.
Por lo tanto,
Pueden ser más rápidos y ayudan a reducir la carga en tu servidor.
Pero… ese beneficio de velocidad también está disponible si usas /vendor en un sitio que ha configurado Discourse para usar un CDN privado.
Además, en cuanto al ancho de banda, la mayoría de las bibliotecas JS externas pesan menos de 20 KB. Así que, aunque obtienes algunos ahorros… no es realmente un punto importante a menos que tu sitio reciba cientos de miles de visitas diarias.
Una de las ventajas de usar algo como cdnjs es que sirven el mismo archivo e incluyen encabezados de caché.
¿Qué significa eso? Bueno, usemos jQuery como ejemplo.
Muchos sitios usan jQuery, y muchos de ellos utilizan cdnjs para entregarlo. Cuando cdnjs entrega el archivo de jQuery al usuario, incluye encabezados de caché (por defecto, 1 año).
Esto significa que si un usuario visita el sitio A, que usa cdnjs para jQuery, y luego visita el sitio B, que también usa el mismo archivo con la misma versión, su navegador no tendrá que descargar jQuery nuevamente, ya que está en caché, lo que acelera la carga de la página.
El punto anterior es la mayor ventaja de usar algo como cdnjs para tus bibliotecas externas.
Sin embargo, muy pocas bibliotecas son tan comunes como jQuery, así que realmente depende de lo común que sea la biblioteca.
Cuando cargues archivos desde cdnjs, también deberás asegurarte de agregarlos a la configuración de CSP.
Así que, supongo que la respuesta aquí es… depende.
¿Estás cargando la biblioteca tal cual?
¿Es común?
¿Es de tamaño considerable?
Si es así, quizás uses un CDN. Si no, manténlo simple y agrégala en /vendor.
