캐시

자주 접근하는 데이터를 복사해두는 임시 저장소

캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용

시간 지역성(temporal locality)

최근 접근한 데이터에 다시 접근하는 경향

공간 지역성(spatial locality)

최근 접근한 데이터의 주변 공간에 다시 접근하는 경향

쿠키

클라이언트에 대한 정보를 브라우저에 저장하기 위해 서버에서 브라우저로 전송하는 정보

세션

'사용자가 웹 서버에 접속해 있는 상태'로, 서버에 저장되는 정보

브라우저 캐시

웹사이트의 콘텐츠가 점점 풍부해지면서 한 페이지를 표시하는 데도 수십개의 파일이 필요해졌고, 전체 용량도 메가바이트 단위로 늘어났다. 사이트에 접속할 때마다 다시 파일들을 다운로드 해야 한다면 시간이 오래 소요된다.

⇒ 콘텐츠가 변경되지 않았을땐 로컬에 저장된 파일을 재사용함으로써 다운로드 횟수를 줄이고 성능을 높이는 '캐시' 메커니즘 등장

HTTP 요청의 Cache-Control 헤더

Cache-Control - HTTP | MDN

public: 같은 컴퓨터를 사용하는 복수의 사용자간 캐시 재사용을 허가한다.

private: 같은 컴퓨터를 사용하는 다른 사용자 간 캐시를 재사용하지 않는다. 같은 URL에서 사용자마다 다른 콘텐츠가 돌아오는 경우에 이용한다. ****

max-age=n: 캐시의 신선도를 초단위로 설정. 86400을 지정하면 하루동안 캐시가 유효하고 서버에 문의하지 않고 캐시를 이용한다. 그 이후는 서버에 문의한 뒤 304 Not Modified가 반환됐을때만 캐시를 이용한다. ****

s-maxage=n: max-age와 같으나 공유 캐시에 대한 설정값이다. ****

min-fresh=<seconds>

no-cache: 캐시가 유효한지 매번 문의한다. max-age=0과 거의 같다. ****캐시된 복사본을 사용자에게 보여주기 이전에, 재검증을 위한 요청을 원 서버로 보내도록 강제합니다.

no-store: 캐시하지 않는다. 캐시는 어떤 것도 저장하지 않는다.

질문)) 캐시란 무엇이며, 브라우저 캐시와 세션, 쿠키의 차이점은 무엇인지 설명하시오

질문)) 서버 지연을 줄이기 위해 사용하는 브라우저 캐시에 대해 설명하고, 브라우저 캐시에는 주로 어떤 값들이 저장되는지 설명하시오

질문)) CPU 상에서 동작할 때 캐시의 지역성에 대해 설명하시오

질문)) 캐시를 자바스크립트로 구현해야 한다면 어떠한 자료 구조를 사용할 것이며 그 이유는 무엇인가?