Skip to content

Commit

Permalink
[7.6-7.7] 캐시 토폴로지 & 처리 단계_김대현
Browse files Browse the repository at this point in the history
  • Loading branch information
vimkim committed Dec 16, 2023
1 parent 6c3464f commit c875349
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 0 deletions.
46 changes: 46 additions & 0 deletions 07장 캐시/7.6 캐시 토폴로지/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 7.6 캐시 토폴로지

## Private Caches

브라우저에서 저장해주는 개인적인 캐시 파일들

## Public Proxy Caches

네트워크 트래픽을 줄여준다.

6장에서 설명된 것처럼

- manual proxy
- proxy auto-configuration file
- intercepting proxies

들을 설정해서 사용할 수 있다. (20장 참고)

## Proxy Cache Hierarchies

캐시 간의 계층 구조를 두는 것이 유용할 수 있다.

우선 가까이에 있는 작은 캐시들을 찾아보고, 캐시 미스가 발생하면 조금 멀리 떨어진 레벨 2 큰 캐시를 찾아보는 식으로 접근할 수 있다.

![캐시 계층 구조](images/20231216230941.png)

## Cache Meshes, Content Routing, and Peering

캐시 계층보다 조금 더 복잡한 캐시 메시 구조를 채택할 수도 있다.

매시들끼리 서로 의사소통해서, 요청 별로 부모 캐시로 보낼 것인지 아니면 바로 origin 서버로 보낼 것인지를 효율적으로 결정한다.

캐시 매시는 다음과 같이 동작한다.

- URL에 따라 parent cache로 가야할지, 원 서버로 가야할지 동적으로 결정한다.
- parent cache로 간다면 어떤 부모 캐시로 가야할지 동적으로 결정한다.
- 부모 캐시에 접근하기 전에 로컬에 요청된 부분에 대한 캐시가 존재하는지 탐색한다.
- 다른 캐시들에게 자기 자신의 캐시된 내용의 일부에 접근을 허용한다. 하지만 인터넷 전송은 금지한다. (?)

sibling cache란 무엇인가?

선택적으로 동료들에게 도움을 주는 캐시

![시블링 캐시](images/20231216231924.png)

HTTP가 sibling cache를 지원하지 않기 때문에 ICP, HTCP와 같은 프로토콜이 나왔다. 20장에서 추가로 다룬다.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions 07장 캐시/7.7 캐시 처리 단계/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 7.7 캐시 처리 단계

7가지 단계로 나뉜다.

## Step 1: Receiving

캐시가 요청 메세지를 네트워크로부터 받는다.

## Step 2: Parsing

요청을 파싱해서 URL과 헤더를 얻는다.

## Step 3: Lookup

로컬 카피가 존재하는지 찾아보고, 없으면 다운로드 받고 로컬에 저장한다.

## Step 4: Freshness Check

다운 받은 캐시가 충분히 신선한지 확인하고, 아니라면 서버에게 업데이트를 요청한다.

요청 헤더에 캐시가 revalidate하는 것을 강제하거나, validation을 안 하도록 강제할 수 있다.

신선도를 어떻게 파악하는지에 대해 이 장의 대부분을 할애할 것이다.

## Step 5: Response Creation

캐시가 응답 메세지를 만든다. 새로운 헤더와 바디를 넣는다.

Cache freshness information을 집어넣는다. Cache-Control, Age, Expires headers등을 넣는다.
프록시 캐시가 해당 응답을 만들었다는 것을 명시하기 위해 때로는 Via 헤더도 넣는다.

캐시는 절대 Date 헤더를 건드려서는 안된다. Date는 해당 객체가 원 서버에 의해 언제 만들어졌는지를 표시한다.

## Step 6: Sending

클라이언트에게 응답을 보낸다.

## Step 7: Logging

선택적으로, 해당 트랜잭션에 대한 로그를 남긴다.

## Cache Processing Flowchart

![캐시 플로우 차트](images/20231216232748.png)
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c875349

Please sign in to comment.