알 사람들은 알겠지만, Jekyll은 매우 느린 것으로 유명하다. 내 블로그 기준으로 빌드 한 번하는 데 10초가 걸린 적도 있음..
1
2
3
4
Regenerating: 1 file(s) changed at 2020-11-08 22:23:03
_posts/2020-11-08-optimize-jekyll-slow-build-time.md
Jekyll Feed: Generating feed for posts
...done in 2.2593816 seconds.
현재 포스팅하면서 빌드 시간을 측정해보았는데, 평균 1.7초 ~ 3초쯤 된다. 어떻게 이럴 수 있단 말인가.. 그래서 참다참다 빌드 최적화 방법을 검색해서 테스트해봤는데, 매우 만족스러웠으며 그 방법을 소개해보겠다.
Jekyll의 빌드 매커니즘
놀랍게도 수정된 포스트만 빌드 대상이 아니라 모든 포스트가 빌드 대상이다. 그래서 포스트가 많을 수록 빌드 시간도 오래 걸릴 수 밖에 없음. 그러고보니 라이벌(?) SSG인 Hugo의 모토가 세계에서 제일 빠른 프레임워크1인 것을 보면 왜 Hugo가 유명한지 알 수 있는 부분이기도 함.. 그렇다고 Hugo로 갈아타고싶은 마음은 없음..
이제 최적화 방법을 알아봅시다.
incremental: true 옵션을 사용한다.
config.yml
파일의 incremental
옵션에 true를 지정해주면 수정된 파일만 빌드가 된다고 한다. 측정해보니 약 4초 정도 줄어들어 평균 1~1.5초 정도로 매우 빨라졌음.
애초에 하나의 포스트만 빌드되도록 해준다.
다른 방법으로, 빌드 명령어 뒤에 --help를 붙이면 사용 가능한 옵션 목록을 볼 수 있다.
bundle exec jekyll serve --help
명령어 실행- 여러 개의 옵션 중 --limit_posts 옵션을 찾을 수 있다.
- 설명을 읽어보면 parse & publish할 포스트의 개수를 제한한다고 나와 있다.
bundle exec jekyll serve --limit_posts 1
, 즉 하나의 포스트만 빌드되도록 명령어를 실행해주면 된다.
1
2
3
4
Regenerating: 1 file(s) changed at 2020-11-08 22:23:03
_posts/2020-11-08-optimize-jekyll-slow-build-time.md
Jekyll Feed: Generating feed for posts
...done in 0.3573721 seconds.
평균 0.3 ~ 0.5초로 매우 빨라진 빌드 시간을 볼 수 있다.
근데 나머지 포스트는 어떻게 접근하느냐? 제일 최신의 포스트 하나만 빌드되므로 나머지 포스트들은 접근할 수 없다. 어차피 포스팅을 하고 있는데 나머지 포스트도 수정을 해야 할 일이 거의 없긴 하다.
참고 링크
Hero image from danigeza