Ho visto plugin che scaricano librerie di terze parti e le caricano come file locali da /vendor, e altri che richiedono la libreria tramite una CDN.
Un approccio è migliore dell’altro in termini di larghezza di banda/velocità?
Ho visto plugin che scaricano librerie di terze parti e le caricano come file locali da /vendor, e altri che richiedono la libreria tramite una CDN.
Un approccio è migliore dell’altro in termini di larghezza di banda/velocità?
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.
Un piccolo aggiornamento: Chrome, Safari e Firefox non funzionano più in questo modo. Non esiste più una cache condivisa tra i siti:
Qualcuno può condividere un link a un plugin che utilizza il metodo di aggiunta di librerie di terze parti tramite la cartella /vendor o una CDN?
Non sono riuscito a trovare alcuna documentazione in merito e ho difficoltà a includere una libreria di terze parti nel mio plugin, registrarla correttamente, conformarmi alla struttura esatta delle cartelle e scrivere correttamente l’istruzione di importazione nei file del controller.
Grazie in anticipo per l’aiuto!
discourse-math potrebbe essere un buon riferimento: ha un certo numero di script ‘venduti’ nella directory /public. Oppure un esempio più semplice potrebbe essere discourse-client-performance.