| "나중에 필요할 수도 있는 무언가를 저장하였다가 신속하게 회수할 수 있는 보관 장소"
캐시를 알기 위해서는 몇가지 기본 원리가 필요합니다.
메모리 계층 구조부터 알아보겠습니다.
컴퓨터에서 메모리 공간의 속도와 용량은 반비례합니다.
그래서 데이터 저장 공간은 속도와 용량에 따라 특성에 맞게 역할을 나누어서 사용합니다.
데이터 저장 공간을 속도-용량 의 순서대로 쌓으면, 메모리 계층 구조입니다
<----------- fast <-----------
Regitstery - Cache - Memory - Disk
-----------> size ----------->
원본데이터가 있으면, 자주 쓰이는 데이터(Hot Data) 들을 복사해둘 캐시공간을 마련합니다.
캐시 공간은 낮은 시간 복잡도로 접근 가능한 곳을 주로 사용합니다.
데이터 요청이 들어오면, 원본 데이터가 담긴 곳에 접근하기 전, 먼저 캐시 내에서 찾습니다.
캐시에 원하는 데이터가 존재하면, 캐시에서 바로 데이터를 접근합니다.
캐시에 원하는 데이터가 없거나 너무 오래되어 최신성을 잃는다면 그 때, 원본 데이터에 접근하여 데이터를 갱신합니다.
캐시는 공간이 모자라게 되면, 안 쓰는 데이터부터 삭제하여 공간을 확보합니다.
캐시 종류에는 cpu,하드디스크, cdn 등 여러가지가 존재합니다.
(db는 하드디스크입니다.)
그 중 자주 사용하는 웹캐시에 대해서 알아보겠습니다.
그 중 브라우저 캐시에 대해 자세히 알아보겠습니다.
웹 서버에서 HTTP 헤더에 캐시 지시자를 삽입하면, 클라리언트 웹 브라우저에서는 해당 지시자에 명시된 캐시 정책에 따라 캐싱을 실시합니다.
캐시의 유효시간 (Max-age)이 지나도, 캐시된 데이터가 바뀌지 않은 경우를 확인하기 위해 ETag라는 유효성 검사 토큰을 사용합니다.
캐시 유효 시간을 최대한 길게 잡으면서도, 정적(static) 파일의 업데이트를 신속히 적용하기 위해 정적 파일 이름 뒤에 별도의 토큰 버전이나 버전 번호를 붙여서 사용하기도 합니다.
결국 웹페이지의 전반적 상황에 따라 각 파일마다 다르게 적용되어야 합니다.
웹 서버에서 캐시를 사용하는 방법입니다.
메모리 기반 오픈소스 NoSQL DBMS 의 일종으로, 웹 서비스에서 캐싱을 위해 자주 사용합니다.
모든 데이터를 메모리에 저장하여 처리하기 때문에 속도가 빠릅니다.
서버 재부팅 때 메모리의 데이터가 휘발되지 않게 기록 가능합니다.
참고 : https://www.youtube.com/watch?v=c33ojJ7kE7M&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=354