쿠키(cookie)
사용자의 브라우저에 저장되고, 통신할 때 HTTP 헤더에 포함되는 텍스트 데이터 파일
이름, 값 만료기간(지정 가능), 경로 정보가 있고 키와 값으로 구성되어 있다.
해당 사용자의 컴퓨터를 사용한다면 누구나 쿠키에 입력된 값을 쉽게 확인할 수 있다.-> 보안성이 낮다
쿠키 통신 방법
- 최초 통신에서는 쿠키값이 없으므로, 일단 클라이언트는 request를 한다.
- 서버에서 클라이언트가 보낸 request header에 쿠키가 없음을 판별 -> 통신 상태(UserID, password, 조작상태, 방문횟수 등)를 저장한 쿠키를 response한다.
- 클라이언트의 브라우저가 받은 쿠키를 생성/보존한다.
- 두번째 연결부턴, http header에 쿠키를 실어서 서버에 request한다.
쿠키 제약 조건
- 클라이언트는 총 300개의 쿠키를 저장할 수 있다.
- 하나의 도메인 당 20개의 쿠키를 가질 수 있다 -> 20개가 넘으면 가장 적게 사용되는 것부터 삭제된다.
- 하나의 쿠키는 4KB 저장 가능
쿠키 사용
- 자동 로그인 유지, 위시 리스트 저장, 팝업 보지 않기, 사용자 이전 스크롤링이나 뷰 설정 값 등 유출 되어도 크게 문제되지 않는 데이터
세션(session)
서버에 저장되는 쿠키라고 할 수 있다.
주로 중요한 데이터를 저장할 때 사용한다.
브라우저를 종료할 때까지 유지된다.
사용자 로컬이 아닌 서버에 직접 저장되므로, 세션 내의 데이터를 탈취하는 것은 어렵다 -> 보안성이 비교적 높음
데이터를 메모리에 저장하는데 동시 접속하는 사용자가 많아지만 메모리 공간이 부족해져서 서버에 부하가 걸리는 등 문제가 발생할 수 있다.
세션 통신 방법
- 클라이언트가 서버에 접속 시, 세션 ID를 발급한다.
- 서버에서는 클라이언트에게 발급해준 세션 ID를 쿠키를 이용해서 저장
- 클라이언트는 다시 페이지에 접속할 때, 쿠키에 저장된 세션 ID를 서버에 전달
- 서버는 request header에 쿠키 정보(세션ID)로 클리이언트를 판별
세션 사용
| 쿠키 | 세션 |
---|
저장위치 | 클라이언트 | 서버 |
보안 | 변질 우려로 취약 | 비교적 좋음 |
라이프 사이클 | 만료기간 지정, 브라우저 종료 시에도 유지 | 브라우저 종료시 삭제(기간 지정 가능하긴 함) |
속도 | 빠름 | 느림(정보가 서버에 있어서) |
캐시
리소스 파일들의 임시 저장소 같은 웨 페이지에 접속할 때 사용자의 PC에서 로드하므로 서버를 거치지 않아도 된다.
이전에 사용되었던 데이터는 다시 사용될 가능성이 높다 -> 그래서 다시 사용될 확률이 있는 데이터들을 빠르게 접근 가능한 저장소에 저장한다.
-> 페이지 로딩 속도를 개선한다. (이미지, 비디오, js, css 등)
- 캐시 히트(cache hit) : cpu가 참조하려는 메모리가 캐시에 존재하고 있는 경우
- 캐시 미스(cache miss) : 캐시 히트와 반대로, 메모리에 캐시가 없는 경우
- 캐시 사용 : 홈페이지 재접속 시 css/js 파일을 사용자의 pc에서 로드, 서버를 거치지 않아도 된다.