불타는 Study
By - phpbae
CDN
CDN을 알아보자!
CDN = Content Delivery Network
Content Distribution Network
Node ? 노드는 네트워크 내의 교차점 / 연결지점을 의미. 모든 장치가 네트워크를 통해 액세
스 할 수 있는 환경의 장치는 모두 노드로 간주.(서버, 클라이언트 -> 컴퓨터 / 라우터. CDN에
서는 컨텐츠를 가진 서버라고 생각하자)
Content ? 텍스트, 응용 플로그램, 이미지, 전자메일, 데이터, 서비스, 오디오 및 비디오 등과
같은 모든 창의적인 요소를 의미.
What is a CDN ?
CDN = Content Delivery Network
Content Distribution Network
- CDN은 원본 서버에서 가져온 데이터(Resource)복사본이 있는 대규모 서버
네트워크를 의미.
- CDN은 contents를 효율적으로 전달하기 위해, Node를 가진 네트워크에 데
이터를 저장하여 제공하는 시스템을 의미.
대기시간(Network 지연시간, Latency)을 줄이기 위해서, CDN
이 만들어 졌습니다.
CDN은 contents를 수신하려는 사용자(client)와 패킷 또는 청
크를 보내는 서버간의 물리적 거리를 줄이기 위해 사용 합니
다.
패킷(packet)? 패킷은 주어진 네트워크 경로를 따라 이동하는 단일 패키지로 만들어진 데이터 단위.
청크(chunk)? SCTP(Stream Control Transmission Protocol)에서 사용되는 제어 데이터 및 패킷 세트.
홉(hop)? 각 패킷이 매 노드를 건너가는 양상을 비유적으로 표현 -> 이러한 체계를 hop-by-hop 체제라고
말함. 홉은 라우팅에서 사용되는 용어로서 하나의 데이터 링크를 가르킨다. 네트워크 내에서 출발지부
터 목적지에 이르는 경로는 일련의 홉들로 연결된다. 홉은 패킷이 통과해야만 하는 라우터의 숫자를 측
정하는데 자주 사용.(실제로 거리보다는, 라우터가 개입될때마다 느려짐. 이유는? Store and Forward이
기 때문이다. -> 패킷을 버퍼에 저장 후, 헤더를 보고 갈 길을 찾은 뒤 보내는거라, 빛의 속도로 전송되는
케이블과는 비교할 수 없을 정도로 느림.
Why use CDN ?
클라이언트와 웹 서버 사이의 거리를 최소화 하기
위해 CDN은 캐시된 버전의 contents를 여러 지
리적 위치에 저장.(points of presence, or PoP)
본질적으로, CDN은 한번에 여러 위치에 contents
를 배치하여, 클라이언트에게 더 나은 적용 범위
를 제공.
CDN’s Process ?
CDN PoP(Points of Presence) ?
지리적으로 가까운 지역의 클라이언트와 의사소
통을 담당하는 전략적으로 위치한 데이터 센터.
주요 기능은, contents를 웹 사이트 방문자에게
더 가까이 가져와서 왕복시간(Round-trip
latency)를 줄이는 것 입니다. 각, CDN PoP에는
일반적으로 수많은 캐싱 서버가 포함되어있다.
각, PoP에 위치한 서버를 ‘edge server’라고 한다.
Edge server = proxy cache server이며, 웹 사이트
의 contents를 생성하지 않으며, 대신 contents
사본을 보관.
CDN’s Process ?
- CDN은 서버의 대역폭을 절약하고, 과도한 사용자 트래픽,
서버 중단 또는 기타 유사한 이벤트가 발생하더라도 최종 사
용자가 contents에 access 할 수 있도록 함으로써 웹 사이트의
가용성을 향상.
What are the benefits
of using a CDN ?
Here is an example of just some of the file types that can be hosted on a CDN:
- Images: PNG, JPG, SVG, GIF, TIF
- Stylesheets: CSS
- JavaScript: JS
- Video and Audio: FLV (Flash), HLS, MP4 (HTML5 videos), MOV (QuickTime), WMV
(Windows Media), MP3 and WAV
- Web Fonts: EOT, TTF, OTF, CFF, AFM, LWFN, FFIL, FON, PFM, PFB, WOFF, SVG, STD, PRO,
XSF, and more…
- Other File Formats: HTML, JSON, PDF, DOC, PPT, XLS, EPUB, ODT, ODP, ODS, TXT, RTF,
ZIP
What type of content Is
Stored on a CDN ?
How to refresh cache
server on a CDN
- 캐시 서버가 오리진 서버의 콘텐츠를 캐싱하고 이용자들에게 캐싱된 콘텐
츠를 전달하는 과정에서 만약 오리진 서버에 저장되어 있는 콘텐츠가 업데
이트되면 이용자들이 캐시 서버로 부터 다운로드 받는 콘텐츠는 더 이상 유
효한 콘텐츠가 아니게 됩니다. 이러면 어떤 문제가 발생을 하느냐? 만약 해
당 콘텐츠가 CSS나 이미지 파일이라면 웹 페이지 화면이 깨져 보이게 되겠
죠. 따라서 캐시 서버는 오리진 서버를 통해 캐싱된 콘텐츠에 대한 유효성
(freshness)를 주기적으로 확인(validation)하고, 만약 콘텐츠가 업데이트되
었으면 다시 다운로드 받아 캐싱을 해야 합니다.
How to refresh cache
server on a CDN
1. 이용자 웹 브라우저가 HTTP GET 메시지를 통해 캐시 서버로 다음과 같이 image.jpg 파일 요청을 합니다. (이용자의 요청이 오리진 서버가 아닌 캐시 서버로 가는 절차는 Request Routing 글을
참조)
Host: www.example.com
Request URI: /image.jpg
2. 웹 브라우저가 최초로 콘텐츠를 요청했으므로 캐시 서버에 해당 파일이 없습니다(Cache Miss).
3. 따라서 캐시 서버는 오리진 서버에게 HTTP GET 메시지를 통해 image.jpg 파일을 요청합니다.
4.오리진 서버는 HTTP 200 OK 메시지를 통해 image.jpg 파일과 해당 콘텐츠의 메타 태그 정보를 캐싱 서버로 전달합니다. 메타 태그에는 아래와 같이 캐싱과 관련된 정보가 포함되어 있습니다.
Last-Modified: Mon, 1 Oct 2012 09:00:00 - 오리진 서버에 저장되어 있는 image.jpg 파일은 2012년 10월 1일 오전 9시 정각에 업데이트 되었음 (이 정보는 뒤에 14번 cache validation에서 사용
됨)
Cache-Control: max-age=100 - image.jpg 파일의 캐싱 유효시간은 100초임. "100초 동안만 캐싱하고, 그 이후에는 다시 오리진 서버로 콘텐츠 요청 혹은 freshness 확인을 해라"라는 의미
5.캐시 서버는 t = 0 시각에 HTTP 200 OK 메시지를 통해 image.jpg 파일을 수신합니다. 그리고 수신한 image.jpg 파일을 캐싱(저장)하고(Cache Fill), 이 콘텐츠의 캐싱 유효시간 100초를 Cache
Control Table에 기록합니다. 이제 캐시 서버는 앞으로 100초 동안은 이용자들의 image.jpg 파일 요청에 대해서 자신이 캐싱한 파일을 전달해 줄 수 있습니다. 그리고 그림에는 표시되지 않았으
나 Last-Modified 필드에 명시된 콘텐츠 업데이트 시각(Mon, 1 Oct 2012 09:00:00)도 함께 저장합니다.
6.캐시 서버는 오리진 서버로 부터 수신한 컨텐츠를 웹 브라우저에게 전달합니다. 이 때 max-age는 오리진 서버가 명시한 값 100초를 그대로 전달합니다. 웹 브라우저는 image.jpg 파일을 100
초 동안 캐싱하며, 따라서 이 시간 동안은 캐싱된 콘텐츠에 대한 재요청을 하지 않습니다.
How to refresh cache
server on a CDN
7.이제 다른 이용자 James(웹 브라우저)가 40초 후(t = 40 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다.
8.캐시 서버에는 image.jpg 파일이 캐싱되어 있으며 아직 캐싱 만료 시간까지는 60초(100초 - 40초)가 남아 있습니다.
9.따라서 캐시 서버는 오리진 서버를 대신하여 James(웹 브라우저)에게 image.jpg 파일을 전달합니다. 이 때의 max-age는 캐시 서버에서 관리하는 캐싱 만료 시간 60초가 됩니다. 따라서
James(웹 브라우저)는 image.jpg 파일을 60초 동안 캐싱합니다.
How to refresh cache
server on a CDN
10.이용자 Alice(웹 브라우저)가 90초 후(t = 90 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다.
11.여전히 캐시 서버는 캐싱 만료 시간이 되지 않았으므로(10초 남음)
12.Alice(웹 브라우저)에게 max-age를 10초로 하여 image.jpg 파일을 전달합니다.
13.캐시 서버는 (구현에 따라 다르지만) 콘텐츠 캐싱 유효시간의 80%가 지난 후(100초의 80%인 80초가 지난 후) 이용자로 부터 해당 콘텐츠 요청이 오면 일단 이용자에게 캐싱된 콘텐츠
전달 후, 캐싱된 콘텐츠의 변경 여부(freshness)를 확인하기 위해 validation 작업을 수행합니다.
14.이를 위해 캐시 서버는 HTTP GET 메시지에 If-Modified-Since 필드를 삽입하여 오리진 서버로 전달합니다. 이 필드에 들어가는 시각은 앞서 4번에서 받은 image.jpg 파일의 업데이트 시
각입니다. 오리진 서버는 이 시각과 자신이 저장하고 있는 image.jpg 파일의 시각을 비교하여,
만약 시각이 다르면(오리진 서버에 image.jpg 파일이 업데이트 된 경우) HTTP 200 OK 메시지를 통해 업데이트된 image.jpg를 캐시 서버로 전달해 주고,
시각이 같다면(업테이트 되지 않았다면) HTTP 304 Not Modified 메시지로 응답을 합니다. 이 메시지에는 image.jpg 콘텐츠가 포함되어 있지 않습니다. 즉, "콘텐츠가 업데이트 되지
않았으니 네(캐시 서버)가 가지고 있는거 써라"는 의미입니다.
15.오리진 서버로부터 HTTP 304 Not Modified 메시지를 수신한 캐시 서버는 해당 메시지에 명시된 max-age=100으로 image.jpg의 캐싱 유효시간을 리셋합니다. 즉, 다시 Cache Control
Table의 값을 100초로 설정합니다.
How to refresh cache
server on a CDN
정리
- 캐시 서버는 오리진 서버에서 다운로드 받아 캐싱하는 각 콘텐츠에 대해 캐싱 유효시간(max-age)을 관
리.
- 이용자에게는 캐시 서버에서 관리하는 캐싱 유효시간(max-age)을 전달.
- 캐시 서버는 캐싱 유효시간(max-age)이 만료되기 전에 미리 오리진 서버를 통해 validation을 수행.
-Validation은 HTTP GET 메시지 헤더에 If-Modified-Since 필드를 이용하여 수행하며, 오리진 서버는 해당
콘테츠가 업데이트되었으면 HTTP 200 OK 메시지를 통해 업데이트된 콘텐츠를 전달하고 그렇지 않은 경
우 HTTP 304 Not Modified 메시지로 응답.
참고 링크 : http://www.netmanias.com/ko/post/blog/5654/cdn-http/http-cache-control-expiration-and-
validation

More Related Content

PPTX
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
DOCX
아마존 Aws 서비스_연구
PPTX
HTTP 완벽가이드 7장 캐시
PDF
HTTP 완벽가이드 - ch5. web server
PPTX
Hanghae99 FinalProject Moyeora!
PDF
SPDY : 더 빠른 웹을 위한 프로토콜
PDF
Big query at GDG Korea Cloud meetup
PPTX
About memcached
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
아마존 Aws 서비스_연구
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 - ch5. web server
Hanghae99 FinalProject Moyeora!
SPDY : 더 빠른 웹을 위한 프로토콜
Big query at GDG Korea Cloud meetup
About memcached

What's hot (20)

PDF
서버성능개선 류우림
PDF
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
PDF
서버 인프라를지탱하는기술(1.3,1.4)
PDF
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
PPTX
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
PDF
Optane DC Persistent Memory(DCPMM) 성능 테스트
PDF
Amazon cf day sesseion2
PDF
Kafka 자료 v0.1
PPT
Hadoop Overview 1
PDF
메모리 할당에 관한 기초
PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
PDF
Express framework tutorial
PPTX
[211] HBase 기반 검색 데이터 저장소 (공개용)
PDF
Kubernetes에서 Windows Application 호스팅하기
PDF
네트워크 기본
PDF
Glusterfs 소개 v1.0_난공불락세미나
PDF
Understanding of Apache kafka metrics for monitoring
PDF
[252] 증분 처리 플랫폼 cana 개발기
PDF
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
PPTX
20170609 tech day_4th-nginx(lb)-이재훈
서버성능개선 류우림
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
서버 인프라를지탱하는기술(1.3,1.4)
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
Optane DC Persistent Memory(DCPMM) 성능 테스트
Amazon cf day sesseion2
Kafka 자료 v0.1
Hadoop Overview 1
메모리 할당에 관한 기초
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Express framework tutorial
[211] HBase 기반 검색 데이터 저장소 (공개용)
Kubernetes에서 Windows Application 호스팅하기
네트워크 기본
Glusterfs 소개 v1.0_난공불락세미나
Understanding of Apache kafka metrics for monitoring
[252] 증분 처리 플랫폼 cana 개발기
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
20170609 tech day_4th-nginx(lb)-이재훈
Ad

Similar to CDN - Content Delivery Network (20)

PPTX
CDN overview
PPTX
PPTX
AWS CloudFront 가속 및 DDoS 방어
PPTX
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
PDF
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
PPT
L4교육자료
PDF
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
PDF
클라우드 플레어 101
PDF
[오픈소스컨설팅]파일럿진행예제 on AWS
PDF
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
PDF
오픈 소스 클라우드 플랫폼 분석
PPT
Rhea_MMO_SNG_Convergence_Server_Architecture
PDF
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
PDF
PPTX
강서구 자바 스터디 - Cache
PPTX
강서구 자바 스터디
PDF
GS Neotek aws_Amazon_CloudFrontDay2018_session4
PPTX
Servlet&jsp 1장
PPTX
HeadFisrt Servlet&JSP Chapter 1
 
PDF
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
CDN overview
AWS CloudFront 가속 및 DDoS 방어
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
L4교육자료
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
클라우드 플레어 101
[오픈소스컨설팅]파일럿진행예제 on AWS
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
오픈 소스 클라우드 플랫폼 분석
Rhea_MMO_SNG_Convergence_Server_Architecture
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
강서구 자바 스터디 - Cache
강서구 자바 스터디
GS Neotek aws_Amazon_CloudFrontDay2018_session4
Servlet&jsp 1장
HeadFisrt Servlet&JSP Chapter 1
 
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
Ad

More from ChangHyeon Bae (16)

PPT
호이스팅, 클로저, IIFE
PPTX
Webpack&babel
PPTX
PPTX
PPTX
javascript03
PPTX
javascript02
PPTX
javascript01
PPTX
Java memory
PPTX
JavaScript 실행컨텍스트와 클로저
PPTX
WAS와 웹서버 간단 정리
PPTX
REST Concept
PPTX
Srping data rest
PPTX
Angular 살짝 해보고 발표.
PPTX
OOP - Object Oriendted Programing
PPTX
TDD - Test Driven Development
PPTX
DI - Dependency Injection
호이스팅, 클로저, IIFE
Webpack&babel
javascript03
javascript02
javascript01
Java memory
JavaScript 실행컨텍스트와 클로저
WAS와 웹서버 간단 정리
REST Concept
Srping data rest
Angular 살짝 해보고 발표.
OOP - Object Oriendted Programing
TDD - Test Driven Development
DI - Dependency Injection

CDN - Content Delivery Network

  • 1. 불타는 Study By - phpbae CDN
  • 2. CDN을 알아보자! CDN = Content Delivery Network Content Distribution Network
  • 3. Node ? 노드는 네트워크 내의 교차점 / 연결지점을 의미. 모든 장치가 네트워크를 통해 액세 스 할 수 있는 환경의 장치는 모두 노드로 간주.(서버, 클라이언트 -> 컴퓨터 / 라우터. CDN에 서는 컨텐츠를 가진 서버라고 생각하자) Content ? 텍스트, 응용 플로그램, 이미지, 전자메일, 데이터, 서비스, 오디오 및 비디오 등과 같은 모든 창의적인 요소를 의미. What is a CDN ? CDN = Content Delivery Network Content Distribution Network - CDN은 원본 서버에서 가져온 데이터(Resource)복사본이 있는 대규모 서버 네트워크를 의미. - CDN은 contents를 효율적으로 전달하기 위해, Node를 가진 네트워크에 데 이터를 저장하여 제공하는 시스템을 의미.
  • 4. 대기시간(Network 지연시간, Latency)을 줄이기 위해서, CDN 이 만들어 졌습니다. CDN은 contents를 수신하려는 사용자(client)와 패킷 또는 청 크를 보내는 서버간의 물리적 거리를 줄이기 위해 사용 합니 다. 패킷(packet)? 패킷은 주어진 네트워크 경로를 따라 이동하는 단일 패키지로 만들어진 데이터 단위. 청크(chunk)? SCTP(Stream Control Transmission Protocol)에서 사용되는 제어 데이터 및 패킷 세트. 홉(hop)? 각 패킷이 매 노드를 건너가는 양상을 비유적으로 표현 -> 이러한 체계를 hop-by-hop 체제라고 말함. 홉은 라우팅에서 사용되는 용어로서 하나의 데이터 링크를 가르킨다. 네트워크 내에서 출발지부 터 목적지에 이르는 경로는 일련의 홉들로 연결된다. 홉은 패킷이 통과해야만 하는 라우터의 숫자를 측 정하는데 자주 사용.(실제로 거리보다는, 라우터가 개입될때마다 느려짐. 이유는? Store and Forward이 기 때문이다. -> 패킷을 버퍼에 저장 후, 헤더를 보고 갈 길을 찾은 뒤 보내는거라, 빛의 속도로 전송되는 케이블과는 비교할 수 없을 정도로 느림. Why use CDN ?
  • 5. 클라이언트와 웹 서버 사이의 거리를 최소화 하기 위해 CDN은 캐시된 버전의 contents를 여러 지 리적 위치에 저장.(points of presence, or PoP) 본질적으로, CDN은 한번에 여러 위치에 contents 를 배치하여, 클라이언트에게 더 나은 적용 범위 를 제공. CDN’s Process ?
  • 6. CDN PoP(Points of Presence) ? 지리적으로 가까운 지역의 클라이언트와 의사소 통을 담당하는 전략적으로 위치한 데이터 센터. 주요 기능은, contents를 웹 사이트 방문자에게 더 가까이 가져와서 왕복시간(Round-trip latency)를 줄이는 것 입니다. 각, CDN PoP에는 일반적으로 수많은 캐싱 서버가 포함되어있다. 각, PoP에 위치한 서버를 ‘edge server’라고 한다. Edge server = proxy cache server이며, 웹 사이트 의 contents를 생성하지 않으며, 대신 contents 사본을 보관. CDN’s Process ?
  • 7. - CDN은 서버의 대역폭을 절약하고, 과도한 사용자 트래픽, 서버 중단 또는 기타 유사한 이벤트가 발생하더라도 최종 사 용자가 contents에 access 할 수 있도록 함으로써 웹 사이트의 가용성을 향상. What are the benefits of using a CDN ?
  • 8. Here is an example of just some of the file types that can be hosted on a CDN: - Images: PNG, JPG, SVG, GIF, TIF - Stylesheets: CSS - JavaScript: JS - Video and Audio: FLV (Flash), HLS, MP4 (HTML5 videos), MOV (QuickTime), WMV (Windows Media), MP3 and WAV - Web Fonts: EOT, TTF, OTF, CFF, AFM, LWFN, FFIL, FON, PFM, PFB, WOFF, SVG, STD, PRO, XSF, and more… - Other File Formats: HTML, JSON, PDF, DOC, PPT, XLS, EPUB, ODT, ODP, ODS, TXT, RTF, ZIP What type of content Is Stored on a CDN ?
  • 9. How to refresh cache server on a CDN - 캐시 서버가 오리진 서버의 콘텐츠를 캐싱하고 이용자들에게 캐싱된 콘텐 츠를 전달하는 과정에서 만약 오리진 서버에 저장되어 있는 콘텐츠가 업데 이트되면 이용자들이 캐시 서버로 부터 다운로드 받는 콘텐츠는 더 이상 유 효한 콘텐츠가 아니게 됩니다. 이러면 어떤 문제가 발생을 하느냐? 만약 해 당 콘텐츠가 CSS나 이미지 파일이라면 웹 페이지 화면이 깨져 보이게 되겠 죠. 따라서 캐시 서버는 오리진 서버를 통해 캐싱된 콘텐츠에 대한 유효성 (freshness)를 주기적으로 확인(validation)하고, 만약 콘텐츠가 업데이트되 었으면 다시 다운로드 받아 캐싱을 해야 합니다.
  • 10. How to refresh cache server on a CDN 1. 이용자 웹 브라우저가 HTTP GET 메시지를 통해 캐시 서버로 다음과 같이 image.jpg 파일 요청을 합니다. (이용자의 요청이 오리진 서버가 아닌 캐시 서버로 가는 절차는 Request Routing 글을 참조) Host: www.example.com Request URI: /image.jpg 2. 웹 브라우저가 최초로 콘텐츠를 요청했으므로 캐시 서버에 해당 파일이 없습니다(Cache Miss). 3. 따라서 캐시 서버는 오리진 서버에게 HTTP GET 메시지를 통해 image.jpg 파일을 요청합니다. 4.오리진 서버는 HTTP 200 OK 메시지를 통해 image.jpg 파일과 해당 콘텐츠의 메타 태그 정보를 캐싱 서버로 전달합니다. 메타 태그에는 아래와 같이 캐싱과 관련된 정보가 포함되어 있습니다. Last-Modified: Mon, 1 Oct 2012 09:00:00 - 오리진 서버에 저장되어 있는 image.jpg 파일은 2012년 10월 1일 오전 9시 정각에 업데이트 되었음 (이 정보는 뒤에 14번 cache validation에서 사용 됨) Cache-Control: max-age=100 - image.jpg 파일의 캐싱 유효시간은 100초임. "100초 동안만 캐싱하고, 그 이후에는 다시 오리진 서버로 콘텐츠 요청 혹은 freshness 확인을 해라"라는 의미 5.캐시 서버는 t = 0 시각에 HTTP 200 OK 메시지를 통해 image.jpg 파일을 수신합니다. 그리고 수신한 image.jpg 파일을 캐싱(저장)하고(Cache Fill), 이 콘텐츠의 캐싱 유효시간 100초를 Cache Control Table에 기록합니다. 이제 캐시 서버는 앞으로 100초 동안은 이용자들의 image.jpg 파일 요청에 대해서 자신이 캐싱한 파일을 전달해 줄 수 있습니다. 그리고 그림에는 표시되지 않았으 나 Last-Modified 필드에 명시된 콘텐츠 업데이트 시각(Mon, 1 Oct 2012 09:00:00)도 함께 저장합니다. 6.캐시 서버는 오리진 서버로 부터 수신한 컨텐츠를 웹 브라우저에게 전달합니다. 이 때 max-age는 오리진 서버가 명시한 값 100초를 그대로 전달합니다. 웹 브라우저는 image.jpg 파일을 100 초 동안 캐싱하며, 따라서 이 시간 동안은 캐싱된 콘텐츠에 대한 재요청을 하지 않습니다.
  • 11. How to refresh cache server on a CDN 7.이제 다른 이용자 James(웹 브라우저)가 40초 후(t = 40 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다. 8.캐시 서버에는 image.jpg 파일이 캐싱되어 있으며 아직 캐싱 만료 시간까지는 60초(100초 - 40초)가 남아 있습니다. 9.따라서 캐시 서버는 오리진 서버를 대신하여 James(웹 브라우저)에게 image.jpg 파일을 전달합니다. 이 때의 max-age는 캐시 서버에서 관리하는 캐싱 만료 시간 60초가 됩니다. 따라서 James(웹 브라우저)는 image.jpg 파일을 60초 동안 캐싱합니다.
  • 12. How to refresh cache server on a CDN 10.이용자 Alice(웹 브라우저)가 90초 후(t = 90 시각)에 동일 콘텐츠 image.jpg를 동일 캐시 서버로 요청합니다. 11.여전히 캐시 서버는 캐싱 만료 시간이 되지 않았으므로(10초 남음) 12.Alice(웹 브라우저)에게 max-age를 10초로 하여 image.jpg 파일을 전달합니다. 13.캐시 서버는 (구현에 따라 다르지만) 콘텐츠 캐싱 유효시간의 80%가 지난 후(100초의 80%인 80초가 지난 후) 이용자로 부터 해당 콘텐츠 요청이 오면 일단 이용자에게 캐싱된 콘텐츠 전달 후, 캐싱된 콘텐츠의 변경 여부(freshness)를 확인하기 위해 validation 작업을 수행합니다. 14.이를 위해 캐시 서버는 HTTP GET 메시지에 If-Modified-Since 필드를 삽입하여 오리진 서버로 전달합니다. 이 필드에 들어가는 시각은 앞서 4번에서 받은 image.jpg 파일의 업데이트 시 각입니다. 오리진 서버는 이 시각과 자신이 저장하고 있는 image.jpg 파일의 시각을 비교하여, 만약 시각이 다르면(오리진 서버에 image.jpg 파일이 업데이트 된 경우) HTTP 200 OK 메시지를 통해 업데이트된 image.jpg를 캐시 서버로 전달해 주고, 시각이 같다면(업테이트 되지 않았다면) HTTP 304 Not Modified 메시지로 응답을 합니다. 이 메시지에는 image.jpg 콘텐츠가 포함되어 있지 않습니다. 즉, "콘텐츠가 업데이트 되지 않았으니 네(캐시 서버)가 가지고 있는거 써라"는 의미입니다. 15.오리진 서버로부터 HTTP 304 Not Modified 메시지를 수신한 캐시 서버는 해당 메시지에 명시된 max-age=100으로 image.jpg의 캐싱 유효시간을 리셋합니다. 즉, 다시 Cache Control Table의 값을 100초로 설정합니다.
  • 13. How to refresh cache server on a CDN 정리 - 캐시 서버는 오리진 서버에서 다운로드 받아 캐싱하는 각 콘텐츠에 대해 캐싱 유효시간(max-age)을 관 리. - 이용자에게는 캐시 서버에서 관리하는 캐싱 유효시간(max-age)을 전달. - 캐시 서버는 캐싱 유효시간(max-age)이 만료되기 전에 미리 오리진 서버를 통해 validation을 수행. -Validation은 HTTP GET 메시지 헤더에 If-Modified-Since 필드를 이용하여 수행하며, 오리진 서버는 해당 콘테츠가 업데이트되었으면 HTTP 200 OK 메시지를 통해 업데이트된 콘텐츠를 전달하고 그렇지 않은 경 우 HTTP 304 Not Modified 메시지로 응답. 참고 링크 : http://www.netmanias.com/ko/post/blog/5654/cdn-http/http-cache-control-expiration-and- validation