본문 바로가기
IT 공부/새로운 시작

HTTP(16) - 쿠키, 캐시

by 수박한암살자 2022. 1. 2.

우리가 알게 모르게 많이 사용하는 쿠키에 대해서 알아보자.

 

보통 사용처는

사용자 로그인 세션 관리 / 광고 정보 트래킹에 많이 쓰인다.

 

쓰는 이유는 무엇일까?

 

우리가 네이버에 로그인 하면 XXX님 어서오세요. 와 같이

내가 누구인지 띄워주곤 한다.

 

이러한 정보를 페이지에 접근할 때마다 '내가 누구인지' 요청에 하나하나 담아서 보내야할까?

당연히 번거롭고 좋은 방안이 아니라는 생각이 든다.

(예를 들어, 내가 친구한테 전화하는데 전화할 때마다 누군지 안 떠서 내가 누구인지 말하는 것과, 친구 핸드폰에 내 이름이 떠서 한번에 아는 건 다르다)

 

따라서 쿠키를 사용하여 기본적으로 요청에 내가 누구인지 늘 알 수 있는 데이터를 서버로 넘어가도록 한다면

(상황에 따라) 더 효율적이라고 볼 수 있다!

 

쿠키의 정보는 항상 서버로 전송한다.

따라서 네트워크 트래픽이 추가로 유발 되니 최소한의 정보만 사용해야만 한다.

만약 전송하지 않고 웹 브라우저에 저장하고 싶다면 localStorage나 sessionStorage를 사용하면 된다.

 

주의할 점은 보안에 민감한 데이터는 저장하면 안된다는 것이다!!

쿠키 관련 헤더는 아래와 같다.

 

- Set-Cookie: 서버에서 클라이언트로 쿠키 전달(응답)

- Cookie: 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달 

 

또한 쿠키는 생명 주기(만료시간), 어느 도메인에 적용할지,

어느 경로에서만 적용할지, 그리고 보안 설정 등을 설정할 수 있다.

(https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies)

 


이번엔 캐시에 대해서 알아보자.

 

우리가 네이버에 접근할 경우 많은 이미지와 텍스트를 포함한 각종 수많은 정보들이 넘어온다.

근데 우리가 바로 네이버에 5초 뒤에 다시 들어갈 경우 그 정보들을 다 새롭게 불러와야할까? 답은 아니다 이다.

 

이런 경우 캐시를 사용하여 네트워크 트래픽을 줄일 수 있다.

캐시는 쉽게 말해 변화가 자주 일어나지 않는 데이터를 웹 브라우저에 저장하여 원하는 경우 꺼내다 쓰는 방법이라 보면 된다.

이를 이용하면 트래픽도 줄이고, 불러오는 속도도 빨라지며 사용자 경험이 빨라지는 효과를 가져올 수 있다.

 

하지만 영원히 보관하는 것은 효율적이지 않다.

유효 기간을 설정하면 해당 유효 기간이 지날 경우, 브라우저는 캐시를 삭제하고 서버에 재요청하여 가져오게 된다.

 

하지만...! 이런 의문이 들 수 있다.

유효 기간이 지났음에도 서버에 있는 그림 파일이 그대로라면? 그럼 비효율적이지 않을까?

따라서 이를 방지하기 위해 해당 그림 파일이 언제 최종 수정되었는지(Last-Modified)를 체크한다거나

해당 그림 파일 자체가 예전과 같은 파일인지(Etag)를 체크하여 더 효율적인 네트워크 통신을 할 수 있다.

 

또한 캐시 역시 사용자의 브라우저에 저장되면 안되는 데이터가 있을 수 있다.

이 경우에는 Cache-Control : no-store 와 같이 설정하여 저장하지 않도록 할 수 있다.

그 외 항상 서버에 검증을 한 번 하고 넘어가게(Cache-Control : no-cache)하는 것도 가능하다.

반응형

댓글