Cache란?

Groot·2022년 8월 24일
0

TIL

목록 보기
43/153
post-thumbnail
post-custom-banner

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 Cache란?

  • 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
  • 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다.
  • 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

📍 Cache의 종류와 역할

🔗 CPU 캐시

  • 대용량의 메인 메모리 접근을 빠르게 하기 위해 CPU 칩 내부나 바로 옆에 탑재하는 작은 메모리이다.

🔗 디스크 캐시

  • 디스크로부터 읽은 내용을 일부 보존해두는 메모리 영역을 말한다.
  • 나중에 같은 데이터를 읽어야 할 경우가 생기면 실제 디스크에서 읽는 게 아니라 디스크 캐시에서 빠르게 읽어낼 수 있다.

참고 - 위키디피아

🔗 캐시란 무엇이고 어떤 역할일까?

  • 데이터나 값을 미리 복사(저장)해 놓는 임시 장소
  • 데이터를 미리 복사해 놓고 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근하게 해준다.

🔗 몇 가지 기준으로 캐시를 구분해볼까?

  • 캐시는 클라이언트, 서버 구분이 있나?
    • 클라이언트와 서버의 캐시는 구분된다.
    • 클라이언트는 클라이언트만의 local에 저장할 수 있는 캐시가 있으며, 서버는 여러 클라이언트의 요청에 대해 저장할 수 있는 캐시가 있다.
  • 캐시는 어디어디에 저장할 수 있을까?
    • 1) RAM 메모리
      • 임시적인 데이터
      • 자주 업데이트 되는 데이터
      • 작은 사이즈의 데이터
    • 2) 디스크 캐시 → 하드 디스크에 저장(앱 내부 디스크(UserDefaults, CoreData), 앱 외부 디스크)
      • 항상 가지고 있어야하는 데이터
      • 자주 업데이트 되지 않는 데이터
      • 큰 사이즈의 데이터
    • 3) CPU 캐시메모리
      • 병목현상을 해결하기 위한 메모리

🔗 캐시를 구현할 때 고려해야 하는 캐시 운용 정책에는 어떤것들이 있을까?

  • 1) 보안성 (캐시 접근 및 저장 관련)
  • 2) 데이터 수명
  • 3) 캐시 교체 정책 (Cache Replacement Policy)
    • 데이터 사용시간에 따른 교체 (사용시간 작은것 부터..)
    • LRU, FIFO, LFU 구조에 따라 교체
    • Random, NUR, Optimal 등등...
  • 4) 저장하는 시점에 따른 정책
    • Write Through: 쓰기 요청 시 즉시 저장
    • Write Back: 쓰기 요청 시 캐시에서만 이뤄지고 바로 저장되지 않고 추후 캐시에서 해당 사항이 끝날때 최종으로 한번에 변경사항 저장

🔗 NSCache의 용도는?

  • 일반적으로 NSCache 개체를 사용하여 생성 비용이 많이 드는 일시적인 데이터가 있는 개체를 임시로 저장합니다.
  • 이러한 개체를 재사용하면 해당 값을 다시 계산할 필요가 없기 때문에 성능상의 이점을 얻을 수 있습니다.
  • 캐시가 시스템 메모리를 너무 많이 사용하지 않도록 하는 다양한 자동 제거 정책을 통합한 Dictionary 형태의 클래스이다.
  • 다른 응용 프로그램에서 메모리가 필요한 경우 이러한 정책은 캐시에서 일부 항목을 제거하여 메모리 사용 공간을 최소화합니다.

🔗 URLCache의 기본 캐시 정책은?

  • URLCache 클래스는 네트워크 리소스로부터의 응답을 캐싱하는데 사용됩니다.

  • 앱에서 URLCache의 shared 속성을 사용하여 공유 캐시 인스턴스에 직접 접근하는 것이 가능합니다.

  • 아니면 다른 목적을 위해 URLSessionConfiguration에 고유한 캐시를 생성할 수도 있습니다.

  • URL Request에 대한 캐시 정책 설정

    • 각 URLRequest 인스턴스에는 URLRequest.CachePolicy 객체가 포함되어있어 캐싱을 수행해야 할지, 어떻게 캐싱할 것인지를 알려줍니다.
    • 편의를 위해서 URLSessionConfiguration에는 requestCachePolicy라는 속성이 있습니다. 이 Configuration을 사용하는 Session으로부터 생성된 모든 Request는 requestCachePolicy를 Configuration으로부터 상속받아 사용합니다.
    • 표 1.캐시 정책과 각 정책의 동작
    • 표 1은 다양한 정책들이 어떻게 동작하는지를 설명합니다. 이 표는 서버 또는 로컬에서 캐시 및 원본 파일을 로딩하기 위한 각 정책의 기본 설정을 보여줍니다. 현재는 HTTP와 HTTPS 응답만 캐시가 가능하며 FTP 및 파일 URL에 대해서는 원본 소스에 응답을 허용할 것인지에 대해서만 정책 적용이 되고 있습니다.
URL 로드 요청에 대한 기본 정책
  • 1) 요청에 대해 캐시된 응답이 없으면 URL 로딩 시스템은 원래 소스에서 데이터를 가져옵니다.
  • 2) 요청에 대해 캐시된 응답이있고 그 응답이 매번 유효성을 다시 확인해야 한다고 표시하지 않고, 오래되지 않은 경우(만료 날짜가 지나지 않은 경우) URL 로딩 시스템은 캐시된 응답을 반환합니다.
  • 3) 캐시된 응답이 오래되었거나 재검증이 필요한 경우 URL 로딩 시스템은 리소스가 변경되었는지 확인하기 위해 원본 소스에 HEAD 요청을 보냅니다.
  • 4) 만약 변경이 됐으면 URL 로딩 시스템은 원본 소스에서 데이터를 가져옵니다. 변경이 안됐으면 캐시된 응답을 반환합니다.

URLCache - 기본정책?

profile
I Am Groot
post-custom-banner

0개의 댓글