<-->
본문 바로가기

Express 웹페이지 개발/프로덕션

프로덕션 할때 꼭 해야할 설정!(캐싱)

반응형

https://www.dynatrace.com/news/blog/the-drastic-effects-of-omitting-node-env-in-your-express-js-applications/

 

The effects of omitting NODE_ENV in your Express.js apps

 

www.dynatrace.com

mdn 문서 뒤적거리다가 좋은 글을 발견했다. 읽고있으면 이래서 코드리뷰가 중요하구나.. 싶다.

 

https://github.com/expressjs/express/blob/master/lib/application.js

 

expressjs/express

Fast, unopinionated, minimalist web framework for node. - expressjs/express

github.com

나도 호기심이 생겨서 관련 코드를 읽어봤다.

 

app.init() 메소드에서 기본값 설정을 위해 this.defaultConfiguration()를 불러오고

 

app.defaultConfiguration()는 env 변수에 process.env.NODE_ENV가 없으면

default값으로 'development'를 대입한다.

그리고 env변수가 'production' 일때만 캐싱기능을 켜주는

this.enable('view cache')를 실행해준다.   

 

app.render() 에서는 enabled('view cache')가 true인 경우

view 변수에 미리 저장해둔 cache[name]을 대입해준다.

 

물론 첫번째 렌더링에서는 view = cache[name] === undefined가 결과값이 돼서

캐싱 안할떄와 같은 작업을 하게된다.

 

!view인경우 view = new View(name,options) <- 렌더링 관련 객체(path,engine 등등 포함)

view 인스턴스를 만든뒤

cache[name] = view로 cache[name]에 참조 값을 넣어준다. (캐싱완료)

그리고 tryRender(view, renderOptions, done) 메소드로 렌더링을 한다!

 

캐싱을 안쓰면 매번 같은페이지를 렌더링 할때마다

view 인스턴스를 만드느라 의미없이 반복되는 작업을 해야한다.

 

결론:  production시 process.env.NODE_ENV = 'production' 를 쓰면 캐싱 기능이 켜지고

의미없는 작업을 줄일수있어 성능향상을 꾀할수있다,

 

 

코드 보는거 재밌긴한데 내 생각이 맞는지 물어볼 사람이없다..

그리고 말로하는거보다 코드 보여주는게 더 편한 이유를 알겠다.

글쓰기를 연습하면 나아질까??