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.
