CACHE

heyhey·2023년 8월 2일
0

frontend

목록 보기
11/14

CACHE

| "나중에 필요할 수도 있는 무언가를 저장하였다가 신속하게 회수할 수 있는 보관 장소"

캐시를 알기 위해서는 몇가지 기본 원리가 필요합니다.
메모리 계층 구조부터 알아보겠습니다.

메모리 계층 구조

  • 컴퓨터에서 메모리 공간의 속도와 용량은 반비례합니다.

    • 즉 속도가 빠를수록 용량이 작아집니다.
  • 그래서 데이터 저장 공간은 속도와 용량에 따라 특성에 맞게 역할을 나누어서 사용합니다.

  • 데이터 저장 공간을 속도-용량 의 순서대로 쌓으면, 메모리 계층 구조입니다

<----------- fast <-----------
Regitstery - Cache - Memory - Disk
-----------> size ----------->

캐시의 작동 방식

  • 원본데이터가 있으면, 자주 쓰이는 데이터(Hot Data) 들을 복사해둘 캐시공간을 마련합니다.

  • 캐시 공간은 낮은 시간 복잡도로 접근 가능한 곳을 주로 사용합니다.

  • 데이터 요청이 들어오면, 원본 데이터가 담긴 곳에 접근하기 전, 먼저 캐시 내에서 찾습니다.

  • 캐시에 원하는 데이터가 존재하면, 캐시에서 바로 데이터를 접근합니다.

  • 캐시에 원하는 데이터가 없거나 너무 오래되어 최신성을 잃는다면 그 때, 원본 데이터에 접근하여 데이터를 갱신합니다.

    • Cache miss
    • Expiration
  • 캐시는 공간이 모자라게 되면, 안 쓰는 데이터부터 삭제하여 공간을 확보합니다.

웹캐시

캐시 종류에는 cpu,하드디스크, cdn 등 여러가지가 존재합니다.
(db는 하드디스크입니다.)
그 중 자주 사용하는 웹캐시에 대해서 알아보겠습니다.

  • 네트워크를 통해 데이터를 가져오는 것은 하드디스크보다 느릴 수도 있습니다.
  • 브라우저 캐시 : 그래서 웹 브라우저에서는 HTML,CSS,JS 이미지 등으로 하드디스크나 메모리에 캐싱하고, 재활용할 수 있습니다.
  • 응답 캐시 : 웹 서버 또한 상당수의 동적 웹 페이지라 할지라도 매번 내용이 바뀌지 않는 경우가 더 많기 때문에, 서버에서 생성한 HTML을 캐싱해 뒀다가 재활용합니다.
  • 프록시 캐시 : 클라이언트에서 자주 요청받는 내용은 웹 서버로 전달하지 않고, 웹 서버 앞단의 프록시 서버에서 캐싱해둔 데이터를 제공할 수도 있습니다.

브라우저 캐시

그 중 브라우저 캐시에 대해 자세히 알아보겠습니다.

  • 웹 서버에서 HTTP 헤더에 캐시 지시자를 삽입하면, 클라리언트 웹 브라우저에서는 해당 지시자에 명시된 캐시 정책에 따라 캐싱을 실시합니다.

  • 캐시의 유효시간 (Max-age)이 지나도, 캐시된 데이터가 바뀌지 않은 경우를 확인하기 위해 ETag라는 유효성 검사 토큰을 사용합니다.

  • 캐시 유효 시간을 최대한 길게 잡으면서도, 정적(static) 파일의 업데이트를 신속히 적용하기 위해 정적 파일 이름 뒤에 별도의 토큰 버전이나 버전 번호를 붙여서 사용하기도 합니다.

  • 결국 웹페이지의 전반적 상황에 따라 각 파일마다 다르게 적용되어야 합니다.

    • 정적파일과 동적 파일의 브라우징 캐싱 정책은 달라야 합니다.
    • 비공개 정보가 담긴 페이지는 캐싱을 막는 것이 좋습니다.

Redis

웹 서버에서 캐시를 사용하는 방법입니다.

메모리 기반 오픈소스 NoSQL DBMS 의 일종으로, 웹 서비스에서 캐싱을 위해 자주 사용합니다.

모든 데이터를 메모리에 저장하여 처리하기 때문에 속도가 빠릅니다.

서버 재부팅 때 메모리의 데이터가 휘발되지 않게 기록 가능합니다.

참고 : https://www.youtube.com/watch?v=c33ojJ7kE7M&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=354

profile
주경야독

0개의 댓글