본문 바로가기

Node.js

res.json과 res.send 그리고 Etag

1. 조금이라도 더 효율적인 Express를 위하여!

 

웹개발 공부를 하면서 느끼는 것은, 

사실상 경제학의 뿌리가 아닐까 싶기도 하다

 

한정된 자원을 어떻게 효율적으로 배분할 것인가?

라는 경제학의 근본 명제가 거의 비슷하게 적용된다.

 

'한정된 리소스를 어떻게 효율적으로 사용할 것인가?'

 

그런 의미에서 res.send와 res.json을 알아보려 한다.

 

사실 거의 JSON으로 정보를 주고받기 때문에 거의 무지성 수준으로

res.json을 사용하지만, 왜 res.send 대신 사용하는지는 생각해볼 시간이 없었던것 같다.

다음 코드는 res.send의 소스코드이다

 

깃헙에 올라온 소스코드인데, 

switch문으로 불리언,넘버,오브젝트 검사를 하면서 마지막이 this.json으로 빠지는 부분이 있다.

 

res.json 으로 어차피 가게 되면서 처리하는 부분인데, 쉽게 얘기하면

res.send로 보내면 이 부분을 한번 더 거쳐서 실행하게 되는 것이다.

그럴 바에는 res.json으로 바로 보내버리라는 소리이다.

 

물론, 이게 드라마틱한 성능 향상을 보일지는 모르겠지만,

티끌이 모이면 태산이 된다는 느낌은 든다.

 

2. ETag에 대해(res.end)

 

Entity Tag의 약자로서, 다음과 같이 response header에 붙어서 온

 

저 태그를 이용해, 클라이언트에서 캐싱하는 값과, 서버에서 내려주는 버전이 동일한지 여부를 체크한다

당연히, 수정되지 않았으면 캐싱된 것들을 이용하는게 훨씬 효율적일 것이다.

 

다만 res.send, res.json에 적용되는 사항이고, res.end로 마무리하면 적용되지 않는다는게 제일 큰 차이점인것 같다.

 

물론 res.end가 무언가 더 '종료'라는 기능에서는 더 어울리는 네이밍이지만, send나 json으로 마무리해도 자동으로 해당 세션은 종료되기때문에 사용에 문제가 없다.

 

만약 404 not found같은걸 예외처리할때 쓸 수는 있겠으나, 그 이외에는 크게 다르지 않으니, ETag기능이 있는 send나 json 사용을 권장한다.

'Node.js' 카테고리의 다른 글

Semantic Versioning 알아보기  (0) 2023.08.27