Discourse ahora publica activos de JavaScript precompilados, lo que acelerará significativamente la instalación y las actualizaciones, especialmente para servidores con recursos limitados.
Compilar y optimizar los activos de JavaScript siempre ha sido una de las partes que más recursos consume al ejecutar Discourse. A medida que nuestra base de código y el ecosistema de JavaScript han evolucionado, este proceso se ha vuelto aún más exigente.
En nuestras pruebas, estos cambios reducen el tiempo de compilación de activos en una instancia de Digital Ocean con 1 GB de RAM de 45 minutos a solo 3 minutos.
¿Cómo funciona?
En cada confirmación fusionada en main, un flujo de trabajo de GitHub Actions compila y empaqueta los activos en archivos .tar.gz (uno para producción, uno para desarrollo). Estos paquetes se publican a través de lanzamientos de GitHub en un repositorio dedicado. Nos aseguramos de que los activos se publiquen antes de que cualquier confirmación pase a tests-passed.
Al compilar su propio sitio, Discourse ahora verifica si existe un paquete precompilado coincidente y lo descarga. Luego, los complementos se compilan sobre él. Si no se encuentra ningún paquete o hay un error, Discourse recurre a la compilación desde el código fuente.
¿Esto afecta a los usuarios finales?
No. Los activos todavía se sirven a los usuarios finales desde su propio servidor / CDN.
¿Puedo optar por no participar?
¡Sí! Si prefiere compilar sus propios activos y tiene un servidor lo suficientemente potente, establezca DISCOURSE_DOWNLOAD_PRE_BUILT_ASSETS: 0 en su archivo app.yml.
¿Qué pasa si estoy ejecutando una versión bifurcada o parcheada de Discourse?
Los paquetes de activos se nombran por el hash de la confirmación. Si está ejecutando una bifurcación, no se encontrará ningún paquete y los activos se compilarán desde el código fuente. Si su copia de Discourse está parcheada (es decir, el árbol de trabajo de git no está limpio), Discourse no intentará descargar un paquete.
¿Qué pasa con otros pasos de compilación relacionados con activos?
Actualmente, esta optimización se aplica solo a los activos de JS principales. En el futuro, podemos expandirla a algunos complementos y otros pasos como la compresión gz/brotli.
¿Qué pasa con la rama estable?
Los activos precompilados para la rama estable se publicarán a partir de la próxima actualización importante de la versión, prevista para agosto de 2025.