Cache



Cache

데이터나 값을 미리 복사해 놓는 임시 장소. 데이터를 미리 복사해 놓음으로써 계산이나 접근 시간 없이 더 빠른 속도로 데이터 접근이 가능하다. 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공.


CPU Cache

disk cache

대부분의 하드디스크는 디스크 제어와 외부와의 인터페이스를 위해 작은 컴퓨터를 내장하고 있다. 이 작은 컴퓨터는 대개 디스크에 입출력되는 데이터를 저장하는 작은 메모리를 갖고 있다.


CPU 캐시는 하드웨어를 통해 관리되고, 다른 캐시는 소프트웨어적으로 관리된다. 운영 체제의 메인 메모리를 하드 디스크에 복사해 놓는 페이지 캐시는 운영 체제 커널과 파일 시스템을 통해 관리된다. 도메인 이름과 IP주소 사이에 매핑을 저장.

네트워크 사이에 주고 받는 데이터를 캐시해놓는 것이 일반적, 예를 들면 최근 방문한 사이트를 캐시에 저장해 놓는다. 일반적으로 프록시 서버에 저장해 웹 페이지 요청에 응답하게 함으로써 네트워크 대역폭을 절감.

따라서

1) 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터) 2) 반복적으로 동일한 결과를 돌려주는 경우(이미지 및 썸네일)

의 경우에 캐시 사용을 고려하는 것이 좋다.


정리하자면,

결론적으로 캐시에 데이터를 미리 복사해놓으면 접근 시간 없이 빠르게 데이터로 접근이 가능하다. 특히 반복적인 데이터를 불러오는 경우 때마다 SERVER에 요청하는 것이 아닌 캐시를 통해 memory에 저장되어 있는 것을 가져다 사용한다. 큰 어플리케이션에서는 DBMS의 부하를 줄이고 성능을 높이고자 캐시를 사용한다.




CSS version 관리

캐시를 사용하고 있고, 프론트단에서 css, javascript의 코드를 바뀌었다면 클라이언트 쪽에서는 이미 expired된 캐시를 사용하게 되어 각 브라우저마다 동작이 달라 원하는 결과를 얻지 못할 수도 있다.


stale cache 사용 막기

기본적인 캐쉬의 동작은 url을 기준으로 기존에 동일한 url에 요청한 적이 있었는가를 판단한다. 따라서 해당 수정된 파일의 url을 바꿔주면 기존의 캐쉬에 의해 영향을 받지 않게 된다.

url 바꾸기

css/js 파일명은 유지하되 HTML코드에서 불러올 때 version queryString을 붙여주는 방식이 있다.

<link href="http://example.com/custom.css" rel="stylesheet" type="text/css" />
<link href="http://example.com/custom.css?ver=1.1" rel="stylesheet" type="text/css" />

?ver=1.1 -> 처럼 ver 값만 다르게 해주면 다른 url로 인식되기 때문에 캐쉬된 파일이 사용되는 것을 막을 수 있다.