
쿠키.. 세션.. 캐시... 쿠키랑 캐시는 알고 있어서 감이 잡히는데 세션은 들어본적이 없다..! 세 단어 모두 웹과 관련되어있기 때문에 각 단어의 관계를 알아보고자한다.
❗ 유투버 얄코님의 영상을 참고했다!
쿠키는 사용자가 웹사이트를 이용할때 브라우저에 저장되는 정보이다. 브라우저는 사용자의 컴퓨터에 있는 프로그램이므로, 쿠키는 사용자가 가지고 있는 정보라고 할 수 있다. 쿠키는 사용자가 임의로 수정하거나 삭제할 수 있고 보안에 취약하다. 따라서 중요한 정보를 쿠키에 남기면 안될 것이다.
👀TMI
Do it! 자바스크립트 + 제이쿼리 입문 책을 읽을때, '3일동안 창 보지 않기' 기능을 구현하면서 쿠키와 관련된 실습을 진행한적이 있다. 궁금하다면 아래 링크로!!
보안성 때문에 쿠키에 저장하기 곤란한 정보들은 세션에 저장된다. 세션을 사용하는 웹사이트에 사용자가 접속하면 서버에서는 사용자를 구분하기 위해 유효기간이 짧은 임시key 하나를 브라우저로 보낸다. 이때 전송된 임시키가 쿠키에 저장된다.
사용자가 웹 사이트를 이용할때 사용자의 중요한 정보들은 서버의 메모리나 DB에 저장된다. 이때 사용자가 브라우저를 통해 웹사이트를 이용할때마다, 서버에서 받았던 임시key를 포함해서 서버에 HTTP 요청을 보내게 된다. 서버에서는 그 key를 보고 사용자를 인식하여 사용자의 정보를 가공해서 응답을 뿌려주는것이다.
예를 들어, 네이버에 로그인한 상태에서 웹툰, 뉴스, 쇼핑 등 다양한 페이지에 방문해도 로그인 상태가 유지되는것은 네이버 서버가 사용자를 인식하고 있기 때문이다. 만약 이때, 네이버에서의 쿠키를 다 지우고 페이지를 새로고침하면 로그아웃된다. 왜?? 서버 세션에는 사용자의 정보가 남아있지만, 쿠키에 남아있던 서버에서 받았던 key가 사라졌기 때문이다. 즉, 세션에는 남아있는 정보가 자기거라고 인식시킬 key가 사라졌기 때문에 서버가 사용자를 인식하지 못해 로그아웃 된다.
개발자들이 사이트를 만들때 정보를 쿠키에 저장할지, 세션에 저장할지 잘 판단해야 한다!
쿠키는 보안성이 취약하기 때문에 노출시키면 안되는 정보를 담아두면 안되고, 그렇다고 세션으로 다 커버하기에는 접속자가 많을 때 서버에 무리가 가기 때문이다.
| 쿠키 | 세션 |
|---|---|
| 사용자가 가지고 있는 정보 | 서비스 제공자가 가지고 있는 정보 |
캐시는 가져오는데 비용이나 시간이 드는 데이터를 처음 가져왔을때 임시로 저장해두는것이다. 이미지 같은 경우 불러올때 시간이 걸리기 때문에 캐시를 통해 사용자가 자주 접속하는 사이트에는 처음에 불러온 데이터를 사용자의 컴퓨터나 서버에 저장해두는 것이다.
👀TMI
캐시는 컴퓨터 구조 수업에서 컴퓨터의 메모리 부분에서 공부해본적이 있다. 메인메모리에 접근하면 시간이 오래걸리니까 캐시가 존재하는 것처럼, 웹에서의 캐시도 시간을 절약해준다는 점이 비슷한 것 같다.