캐시와 쿠키

bebrain·2023년 3월 29일
0

Cache

자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소.

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

캐시의 데이터는 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용될 수도 있다. 캐시의 주요 목적은 더 느린 기본 스토리지 계층에 액세스해야 하는 필요를 줄임으로써 데이터 검색 성능을 높이는 것이다.

보통 완전하고 영구적인 데이터가 있는 데이터베이스와는 대조적이며

  • 자주 참조되는 데이터
  • 자주 변경되지 않는 데이터
  • 동일한 입력에 대해 동일한 출력을 보장하는 데이터

를 저장하는데에 사용한다.

Cache Hit : 원하는 데이터가 캐시에 존재하여 해당 데이터를 반환하는 것.
Cache Miss : 원하는 데이터가 캐시에 존재하지 않아 DBMS 또는 서버에 데이터를 요청하는 것.

캐시는 저장공간이 작기 때문에, 지속적으로 Cache Miss가 발생하는 데이터의 경우 캐시 전략에 따라서 저장중인 데이터를 변경해야 한다.

// 캐시메모리 종류

* CPU캐시 - 대용량의 메인 메모리 접근을 빠르게 하기 위해 CPU 옆에 탑재한 메모리

* 디스크캐시(버퍼캐시/페이지캐시) - 디스크 제어&외부와의 인터페이스를 위해 하드디스크에 내장되어 있는 작은 컴퓨터의 메모리.
대개 디스크에 입출력되는 데이터를 저장한다(보통 2-32MB 정도의 크기)

* 기타캐시 - 대개 소프트웨어적으로 관리된다.

📌 Local vs Global

Local Cache

Local 장비 내에서만 사용되는 캐시로, Local 장비의 Resource를 이용한다.
Local에서만 작동하기 때문에 속도가 빠른 반면 다른 서버와 데이터 공유가 어렵다는 단점이 있다.

Global Cache

여러 서버에서 Cache Server에 접근하여 사용하는 캐시로 분산된 서버에서 데이터를 저장하고 조회할 수 있다.
네트워크를 통해 데이터를 가져오므로 Local Cache에 비해 상대적으로 느리다. 대신 별도의 Cache서버를 이용하기 때문에 서버 간의 데이터 공유가 쉽다.


📌 웹 캐시

: 사용자가 웹사이트(client)에 접속할 때 정적 리소스(CSS, JS, 이미지 등)을 특정 위치에 저장하는 것으로, 서버에서 해당 데이터를 매번 요청하여 받는 것이 아닌 특정 위치에서 불러옴으로서 사이트 응답 시간을 줄이고 서버 트래픽 감소 효과를 볼 수 있다.

ex) HTML, CSS, JS, 이미지 - 로고, 사진, 백그라운드 등

📑 1. 브라우저캐시(HTTP캐시)
브라우저 혹은 HTTP 요청을 보내는 클라이언트의 내부 디스크 혹은 메모리에 저장되는 캐시.

ex) 브라우저의 back 버튼, 이미 방문한 적이 있는 페이지에 재방문 하는 경우

📑 2. 서버캐시(Gateway캐시)
서버 앞 단에 설치되어 요청에 대한 캐시 및 효율적인 분배를 통해 가용성, 신뢰성, 성능 등을 향상시킨다.

📑 3. 프록시캐시
Client나 Server가아닌 네트워크 상에서 동작. 대기시간 & 트래픽 감소, 접근 정책 & 제한 우회, 사용률 기록등을 수행한다.

브라우저 캐시와는 달리 다수의 웹 서버에서 공유하여 사용할 수 있다.

ex) 회사 or IPS의 방화벽에 설치

웹 브라우저가 서버에서 지금까지 요청한 적이 없는 리소스를 가져오려고 할 때, 서버와 브라우저는 완전한 HTTP 요청/응답을 주고받습니다. HTTP 요청도 완전하고, 응답도 완전합니다. 이후 HTTP 응답에 포함된 Cache-Control 헤더에 따라 받은 리소스의 생명 주기가 결정됩니다.

※ HTTP Header

출처 : https://hahahoho5915.tistory.com/33
출처 : https://toss.tech/article/smart-web-service-cache

사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 말한다.

쿠키는 주로 다음의 목적으로 사용된다.

  • 세션 관리 : 로그인, 장바구니 등.
  • 개인화 : 사용자 기본 설정, 테마 및 기타 설정.
  • 추적 : 사용자 행동 기록 및 분석.

방문한 페이지를 저장하거나 유저의 로그인 정보를 저장하는 등 다양한 방법으로 사용된다. 그리고 문자열만 저장할 수 있다는 제한이 있다.

로컬에 파일 형태로 저장되기 때문에 요청 속도는 서버를 통하는 다른 저장소보다 비교적 빠르다. 하지만 사용자의 로컬에서 관리되기 때문에 보안적인 부분에서 취약할 수 있다는 단점이 있다.

Seesion cookies는 만료일을 포함하지 않습니다. 대신에 브라우저나 탭이 열려있는 동안에만 저장됩니다. 브라우저가 닫히면 cookies는 영구적으로 삭제됩니다. 이 유형의 cookies는 은행 웹사이트 내에서 작업을 하고 있다가 탭을 닫으면 모든 정보를 잊어버리기 때문에 은행 유저들의 자격 증명을 저장하는데 사용될 수 있습니다.

Persistent cookies는 만료일을 가집니다. 이 cookies는 만료일까지 유저의 디스크에 저장되고 만료일이 지나면 삭제됩니다. 유저들이 방문할때마다 유저 경험을 커스텀하기 위해 특정 웹사이트에서 행동을 기록하는 등 여러 활동들에 사용될 수 있습니다.

출처 : https://velog.io/@yiseul/%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%EC%BA%90%EC%8B%9C-%EB%A1%9C%EC%BB%AC%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80%EC%9D%98-%EC%B0%A8%EC%9D%B4

0개의 댓글