본문으로 바로가기

Cache

1.(무기 등의) 은닉처   2.캐시(고속 기억 장치)   3.은닉하다

 

그러니까 무언가를 숨겨서 저장한다는 의미이다.

 

페이지를 열 때마다 html 등 자료를 다시 다운로드 받아야 한다면 비효율적일 것이다.

이미 받은 것은 'Cache'했다가 동일 경로로 접속시 다시 Cache에서 꺼내 쓴다면 속도가 향상될 것이다.

 

그런데 무한정 캐시에 다운로드 받은 걸 모두 저장할 수는 없다.

그래서 보통 expired 기간이 있다. 

 

문제는 Cache를 최신 상태로 유지하는 것이다.

사용자가 이미 저장된 과거의 자료를 Cache에서 꺼내다 쓴다면 개발자가 한 업데이트가 무의미할 테니까 말이다.

 

request header에 if-modified-since에서 modified 된 날짜가 기록되어 있다.

가지고 있는 파일이 이 시간에 수정된 파일이라는 것이다.

만약 이 이후에 수정된 파일이 있다면 내용을 전송해달라고 요청한다.

없다면 기존에 있는 파일을 재사용한다.

 

response header에는 last-modified라고해서 언제 마지막으로 수정되어있는지에 대한 정보가 담겨있다.

if-modified-since와 일치하면 재사용(304 http status code 전송)

수정이 있다면 다운로드 함(200 OK http status code 전송)

 

혹은 response header에는 ETAG라 하여 다운로드 받은 파일에 고유한 tag값을 줘서 이 값을 참고하여

일치하면 재사용, 불일치하면 다운로드하기도 한다.

 

시간과 ETag 둘 중에 하나라도 다르면 다운로드 한다.


전체적인 캐시 정책을 보자

캐시를 짤 때 어떤 방식이 최적인지 제시해준 것이다.

 

Resuable reponse? : 다시 사용할 것인가?

revalidate each time? : 매번 유효성 검사를 해야 하나?

cacheable by intermediate cashes? : 사용자의 위치와 가까운 캐싱 서버 (CDN, CloudFront)에서 사용할 것인가?

  cf) CDN(Contents Delivery Network)은 지리적 물리적으로 떨어져 있는 사용자에게  컨텐츠 제공자의 컨텐츠를 더 빠르게 제공할 수 있는 기술을 말함

maxium cache lifetime? : 캐시 수명

 


 

그래서, 정리하자면 리전과 멀리 있는 사용자들이 빠르게 웹을 내용을 받아보기 위해

캐시서버를 구축할 필요가 있고 이러한 서비스를 CDN이라고 하며

 

이를 AWS에서는 CloudFront라는 이름으로 제공하고 있는 것이다.

 

 


https://opentutorials.org/module/3830

 

HTTP Cache

수업소개 이 수업은 웹의 성능을 향상시키는 핵심 메커니즘은 HTTP Cache 를 다루는 수업입니다.  수업대상 이 수업은 HTTP에 대한 기본적인 이해를 요구합니다. HTTP를 모르시는 분은 HTTP 수업을 먼저 보시고 이 수업을 볼 것을 권해드립니다.  수업을 보는 다른 방법 youtube 재생목록 수업에 참여조건 지식들간의 연관관계는 아래 지식지도를 통해서 볼 수 있습니다.  전체 재생시간 8개의 동영상으로 이루어진 총 32분 분량의 수업입니다. 

opentutorials.org

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching

 

HTTP 캐싱  |  Web Fundamentals  |  Google Developers

이전에 가져온 리소스를 캐싱하고 재사용하는 것은 성능 최적화의 중요한 측면입니다.

developers.google.com

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체