Devo caricare librerie di terze parti da vendor o cdn?

C’è una piccola zona grigia tra le due opzioni. Puoi configurare Discourse per servire le risorse, inclusi i file JS dei temi/plugin, tramite una CDN. Quindi, anche se il tuo plugin carica la libreria esterna in /vendor, verrà caricata dalla CDN che configuri per Discourse. Tuttavia, si tratta di una CDN privata.

Detto questo, non credo sia a questo che ti riferisci. Ti riferisci a servizi come https://cdnjs.com e https://www.jsdelivr.com, ed è un argomento leggermente diverso: una CDN pubblica.

Servizi come cdnjs dispongono di una vasta rete di server dedicati a questo tipo di attività.

Quindi,

Possono essere più veloci e aiutano effettivamente a ridurre il carico sul tuo server.

Ma… questo vantaggio in termini di velocità è disponibile anche se usi /vendor su un sito che ha configurato Discourse per utilizzare una CDN privata.

Inoltre, per quanto riguarda la larghezza di banda, la maggior parte delle librerie JS esterne è < 20 KB. Quindi, anche se ottieni qualche risparmio… non è davvero un punto cruciale a meno che il tuo sito non riceva centinaia di migliaia di visualizzazioni al giorno.

Uno dei vantaggi dell’utilizzo di qualcosa come cdnjs è che servono lo stesso file e includono intestazioni di caching.

Cosa significa? Beh, usiamo jQuery come esempio.

Molti siti usano jQuery e molti di essi si affidano a cdnjs per distribuirlo. Quando cdnjs invia il file jQuery all’utente, include intestazioni di caching, impostate di default su 1 anno.

Questo significa che se un utente visita il sito A, che usa cdnjs per jQuery, e poi visita il sito B, che utilizza lo stesso file con la stessa versione, il browser non dovrà scaricare jQuery di nuovo, poiché è già nella cache; questo porta a un caricamento più veloce delle pagine.

Il punto sopra è il vantaggio principale nell’utilizzare qualcosa come cdnjs per le tue librerie esterne.
Tuttavia, pochissime librerie sono comuni quanto jQuery, quindi dipende davvero da quanto è diffusa la libreria.

Quando carichi file da cdnjs, dovrai anche assicurarti di aggiungerli alle impostazioni CSP.

Quindi, immagino che la risposta qui sia… dipende.

Stai caricando la libreria così com’è?
È comune?
È piuttosto grande?

Se sì, forse usa una CDN. Se no, mantieni le cose semplici e aggiungila semplicemente in /vendor.