구글에서 제공해주는 도구들을 이용해 체크해보니 운영중인 웹사이트 로딩속도가 어마어마하게 느렸다
모바일 기준으로 19.7
경악스러웠다.
당장 손볼수 있는것들을 손봤고 약 2배정도 빠른 속도를 얻어 방법을 공유한다.
이미 되어있던 퍼포먼스 관련 설정들
1. 서버 로드밸런스
2. 부분적으로 적용한 이미지 cloud front
추가한 퍼포먼스 관련 설정들
1. Nginx - gzip
2. Webpack - compression
3. Code spliting
4. 전체 이미지 cloud front 적용
이 중에서 가장 쉽고 큰 효과를 얻은것은 gzip이 아닌가싶다
주의할점은 클라이언트와 웹서의 서버가 분리되어있다면 양쪽 모두에 설정해주어야 한다는 점이다.
코드는 간결하다. nginx.conf 파일에 아래의 내용을 설정한다.
http {
...
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml+rss text/javascript;
...
}
코드 스플리팅은 react의 lazy/suspense를 이용해서 간단히 설정해주었다.
코드를 너무 작은단위로 나눠도 호출하는 시간에서 손해가 발생하기 때문에 webpack plugin 설정에 아래와같이
최소 크기를 설정해주었다
...,
plugins: [
...,
new webpack.optimize.MinChunkSizePlugin({
minChunkSize: 512000, // 50kb
}),
...
]
compression은 역시 plugin 에서 간단히 추가했다.
[
new CompressionPlugin({
filename: '[path][base].gz',
algorithm: 'gzip',
test: /\.js$|\.css$|\.html$/,
threshold: 10240, // 10kb
minRatio: 0.8,
}),
]
'개발, 코딩 > Nginx' 카테고리의 다른 글
[Nginx] detect/filter old browser (야호!) (0) | 2020.06.23 |
---|---|
웹소켓, 400에러해결 / node가 아니라 nginx!? (0) | 2020.03.06 |