HTTP(상태 비저장 프로토콜)는 클라이언트가 누군지 매번 확인해야하는 특성을 가짐. 이를 보완하기 위해 쿠키와 세션을 사용함
: 클라이언트의 상태 정보를 로컬 스토리지(브라우저) 키,값이 들어있는 작은 데이터 파일로 저장, 참조함 / 사용자 인증이 유효한 시간 명시 가능, 파일로 저장돼 유효시간 내에선 브라우저가 종료되도 인증이 유지됨 / 사용자가 따로 요청하지 않아도 브라우저가 request시 http request header에 넣어 자동으로 서버에 전송함 / 보안 취약(클라이언트 정보를 로컬스토리지에 저장->변질,요청 중 스니핑 당할 수 있음), 속도 빠름(쿠키에 정보가 있음), 저장형식 텍스트, 용량 제한있음
e.g. 쇼핑몰 사이트가 사용자의 장바구니 내용을 쿠키에 저장하면, 사용자가 웹사이트를 새로 고침하거나 다시 방문할 때 장바구니 내용을 유지할 수 있음. 쿠키는 클라이언트 측에서 데이터를 저장할 수 있는 작은 파일이므로, 사용자가 사이트를 떠나거나 브라우저를 종료하더라도 쿠키에 저장된 데이터는 유지될 수 있음 (단, 쿠키의 만료 시간에 따라 다를 수 있음)
: 쿠키를 기반으로 하지만 쿠키와 달리 서버가 클라이언트의 상태를 서버 메모리에 저장해 사용 / 서버가 클라이언트를 구분하기 위해 세션 ID 부여 / 브라우저가 종료되면 유효시간에 관계없이 삭제됨 / 서버에 사용자 정보를 둬 쿠키보다 보안에 좋지만 사용자가 많아질수록 서버 메모리 많이 차지함 / 보안 강함(sessionid만 쿠키에 저장하고 그것으로 서버에서 구분해 처리), 속도 느림(정보가 서버에 있어 처리 필요), 저장형식 객체, 용량 서버가 허용하는 한 제한 없음
e.g. 로그인(보안상 중요한 작업)
: 사용 빈도가 높은 데이터를 데이터 출력 위치와 가까운 위치에 저장하는 임시저장소
데이터 재사용을 전제로 함 / 데이러 엑세스 부하를 줄일 수 있음(고속 엑세스) / 데이터 손실 가능성 있음(캐시된 데이터는 일시적이고, 시스템 재시작,만료에 의해 손실될 수 있음)
캐시 기능을 사용하는 Content Delivery Network(CDN): 콘텐츠 전송 네트워크, 전 세계 여러 위치에 분산된 서버를 운영해, 웹 콘텐츠를 분산하고, 사용자 요청을 가장 가까운 서버에서 처리함->콘텐츠 전송 속도up,웹 페이지 로딩 속도up, 서버의 응답시간down, 서버 부하down
e.g. 참조빈도가 높은 데이터, 읽기 전용 데이터, 캐시의 데이터가 손상돼도 문제가 없는 시스템