-먼저 통신에 대해
http 서버와 웹 클라이언트가 존대한다고 가정해봅시다.
그 경우 restAPI를 통해 클라이언트에서 요청하면 서버에서 해당 요청을 실행하고 값을 반환합니다.
이런 통신의 흐름을 생각했을 때 지속적으로 통신하는 것이 아닌 단발성 통신이란 걸 알 수 있습니다.
만약 클라이언트에서 로그인을 요청하고 그에 따른 처리가 끝나면 로그인이 완료될 것입니다.
하지만 로그인 중이라는 것을 지속적으로 인증해줘야 하는데 통신은 단발성입니다.
즉 매번 어딘가에서 인증을 해줘야 한다.
하지만 매번 서버를 거치면 리소스의 낭비를 초래하기 때문에 이러한 부분을 보완하며 정보를 유지하기 위해 쿠키와
세션이 존재한다고 필자는 생각합니다. 캐시 또한 리소스의 효율적인 관리를 위함이며 아래의 설명을 살펴주세요.
-쿠키
웹 환경일 경우 서버에서 데이터를 호출할 때 서버에서 값을 계속 불러주는 것이 아닌
데이터 토큰을 발급하여 불러와줄 값을 토큰을 이용하여 가져옵니다. 이 토큰을 쿠키라 합니다.
실사용
서버에서 DB값을 주기적으로 불러와주는 행위는 리소스를 꽤 차지하기 때문에 유저에게
데이터를 가지고 있는 쿠키를 발급합니다. 유저에게 리소스를 할당하여 서버의 부하를 줄이는 방식입니다.
ex -> JWT나 쿠키를 http에서 발급하여 사용.
옆의 이미지는 일반 웹사이트에서 쿠키가 존재하고사용되고 있는 부분을 캡처
-세션
서버에서 특정값을 유지해줄 때 임시로 저장하는 파일입니다.
실사용
쿠키와 같이 서버에서 DB값을 불러주는 행위가 아닌 서버에서 특정값을 유지하는 상태입니다.
로그인 정보도 예로 들 수 있습니다. 단 유저가 늘어날수록 서버의 부하가 심해집니다.
서버가 무리가 되지 않는 선에서 사용하면 보안성 측면에선 좋습니다.
ex -> 코딩할 때 세션 그냥 사용해주면 서버에서 그 데이터 관리합니다.
밑의 코드라인은 JS의 sesstion 사용법의 이 부분을 기재
sessionStorage.setItem("autosave", 어떤값 ); //sesstion에 저장
sessionStorage.getItem("autosave"); //sesstion에서 호출
-캐시
브라우저 환경에서 서버에서 받은 데이터를 저장한 파일입니다.
재사용될만한 이미지나 용량이 큰 리소스를 임시로 저장해두어 렌더링 속도를 높이는 것이 목적입니다.
실사용
브라우저에서 유저에게 재사용될만한 리소스를 캐시로 저장합니다. 쿠키처럼 유저의 컴퓨터의 리소스를 사용합니다.
이로 인해 리소스가 재사용이 될 때 캐시 정보를 사용하기 때문에 데이터 통신을 덜 하는 만큼 빠른 리 렌더링을 합니다.
ex -> 한번 렌더링 됐던 이미지가 다음번에 더 빠르게 렌더링 되는 현상.
쿠키와 세션의 비교
Cookie | Session | |
저장 위치 | 클라이언트 | 서버 |
용량 제한 | 최대 크기 4096바이트 하나의 도메인에서 20개 까지생성가능 (브라우저 표준상 이렇다함) |
서버 되는한 무제한 |
속도 | 유저의 PC이다 보니 데이터를 금방가져옴 세션보다 조금빠름 |
서버와 데이터 통신을 하기때문에 쿠키보단 조금 느림 |
보안 | 유저의 PC이다 보니 보안성이 조금떨어짐 | 서버에서 데이터 관리를 하기때문에 보안성이 좋은편 |
리소스 | client에 파일로 저장 유기한 사용 (유저PC 리소스 부담) |
server에 브라우저 종료시 까지 유지 (웹서버에서 리소스 부담) |
정보 만료 | 기간 설정시 만료일까지 유지 (설정안하면 브라우저 종료시 종료) |
알수없음(설정하기 나름) |
저장 형식 | text | object |
사용 예시 | 쇼핑몰 장바구니, 로그인창에 id&pass 저장하는것 |
웹 사이트에서 로그인 유지하는것 |
봐주셔서 감사합니다. 지적은 환영합니다.