Discourse는 이제 미리 빌드된 JavaScript 자산을 게시합니다. 이는 특히 리소스가 제한된 서버에서 설치와 업데이트 속도를 크게 향상시킵니다.
JavaScript 자산을 컴파일하고 최적화하는 것은 항상 Discourse 운영에서 가장 많은 리소스를 소비하는 부분 중 하나였습니다. 우리의 코드베이스와 JavaScript 생태계가 발전하면서 이 과정은 더욱 복잡해졌습니다.
우리의 테스트에 따르면, 이러한 변경 사항은 1GB RAM의 Digital Ocean droplet에서 자산 빌드 시간을 45분에서 단 3분으로 줄입니다.
어떻게 작동하나요?
main에 병합되는 모든 커밋마다 GitHub Actions 워크플로가 자산을 빌드하고 번들링하여 .tar.gz 파일(프로덕션용 1개, 개발용 1개)로 생성합니다. 이 번들은 전용 저장소에서 GitHub 릴리스를 통해 게시됩니다. 커밋이 tests-passed로 이동하기 전에 자산이 게시되었는지 확인합니다.
자신의 사이트를 빌드할 때, Discourse는 이제 일치하는 미리 빌드된 번들을 확인하고 다운로드합니다. 이후 플러그인이 그 위에 빌드됩니다. 번들을 찾지 못하거나 오류가 발생하면 Discourse는 소스에서 빌드하는 방식으로 폴백합니다.
최종 사용자에게 영향을 미치나요?
아니요. 자산은 여전히 최종 사용자에게 자신의 서버/CDN에서 제공됩니다.
선택적으로 비활성화할 수 있나요?
네! 자신의 자산을 직접 빌드하기를 원하고 충분히 강력한 서버를 보유하고 있다면, app.yml 파일에서 DISCOURSE_DOWNLOAD_PRE_BUILT_ASSETS: 0으로 설정하세요.
Discourse의 포크나 패치된 버전을 실행 중인 경우 어떻게 되나요?
자산 번들은 커밋 해시로 이름이 지정됩니다. 포크를 실행 중이라면 번들을 찾지 못하여 소스에서 자산이 빌드됩니다. Discourse 사본에 패치가 적용된 경우(즉, git 작업 트리가 깨끗하지 않은 경우), Discourse는 번들을 다운로드하지 않습니다.
다른 자산 관련 빌드 단계는 어떻게 되나요?
현재 이 최적화는 핵심 JS 자산에만 적용됩니다. 향후 일부 플러그인 및 gz/brotli 압축과 같은 다른 단계로 확장될 수 있습니다.
stable 브랜치는 어떻게 되나요?
stable 브랜치의 미리 빌드된 자산은 2025년 8월에 계획된 다음 주요 버전 업데이트부터 게시될 예정입니다.