Discourse ora pubblica asset JavaScript precompilati, che accelereranno significativamente l’installazione e gli aggiornamenti, specialmente per i server con risorse limitate.
La compilazione e l’ottimizzazione degli asset JavaScript sono sempre state una delle parti più dispendiose in termini di risorse per l’esecuzione di Discourse. Con l’evoluzione della nostra codebase e dell’ecosistema JavaScript, questo processo è diventato ancora più impegnativo.
Nei nostri test, queste modifiche riducono il tempo di compilazione degli asset su un droplet Digital Ocean con 1 GB di RAM da 45 minuti a soli 3 minuti.
Come funziona?
Su ogni commit unito a main, un flusso di lavoro di GitHub Actions compila e raggruppa gli asset in file .tar.gz (uno per la produzione, uno per lo sviluppo). Questi bundle vengono pubblicati tramite le release di GitHub in un repository dedicato. Ci assicuriamo che gli asset vengano pubblicati prima che qualsiasi commit passi a tests-passed.
Quando compila il tuo sito, Discourse ora verifica la presenza di un bundle precompilato corrispondente e lo scarica. I plugin vengono quindi compilati sopra. Se non viene trovato alcun bundle o si verifica un errore, Discourse torna alla compilazione dalla sorgente.
Questo ha un impatto sugli utenti finali?
No. Gli asset vengono ancora serviti agli utenti finali dal tuo server / CDN.
Posso disattivarla?
Sì! Se preferisci compilare i tuoi asset e hai un server sufficientemente potente, imposta DISCOURSE_DOWNLOAD_PRE_BUILT_ASSETS: 0 nel tuo file app.yml.
Cosa succede se sto eseguendo una versione forkata o patchata di Discourse?
I bundle di asset sono denominati per hash di commit. Se stai eseguendo un fork, non verrà trovato alcun bundle e gli asset verranno compilati dalla sorgente. Se la tua copia di Discourse è patchata (cioè, l’area di lavoro git non è pulita), Discourse non tenterà di scaricare un bundle.
Cosa ne è degli altri passaggi di compilazione relativi agli asset?
Attualmente, questa ottimizzazione si applica solo agli asset JS principali. In futuro, potremmo estenderla ad alcuni plugin e ad altri passaggi come la compressione gz/brotli.
Cosa ne è del branch stabile?
I bundle di asset precompilati per il branch stabile verranno pubblicati a partire dal prossimo aggiornamento della versione principale, previsto per agosto 2025.