ݺߣ

ݺߣShare a Scribd company logo
HTTP 완벽가
7장 캐시
There are only two
hard things in
Computer Science:
cache invalidation
and naming things.Phil Karlton
HTTP 완벽가이드 7장 캐시
캐시 혜택
▸캐시는 불필요한 데이터 전송을 줄여서, 네트워크 요금으로
인한 비용을 줄여 준다.
▸캐시는 네트워크 병목을 줄여준다. 대역폭을 늘리지 안혹도
페이지를 빨리 불러 올 수 있게 된다.
▸캐시는 원 서버에 대한 요청을 줄여준다. 서버는 부하를 줄일
수 있으며 더 빨리 응답할 수 있게 된다.
▸페이지를 먼 곳에서 불러올수록 시간이 많이 걸리는데, 캐시
는 거리로 인한 지연을 줄여준다.
헤더
▸Last-Modified based
▸If-Modified-Since
▸If-Unmodified-Since
▸ETag based
▸If-Match
▸If-None-Match
196P 두 단계 캐시
계층으로 문서에
접근하기
HTTP://WWW
.SQUID-
CACHE.ORG
캐시 처리 절차
1. 요청 받기 - 캐시는 네트워크로부터 도착한 요청 메시지를 읽는다.
2. 파싱 - 캐시는 메시지를 파싱하여 URL과 헤더들을 추출한다.
3. 검색 - 캐시는 로컬 복사본이 있는지 검사하고, 사본이 없다면 사본을 받아온
다(그리고 로컬에 저장)
4. 신선도 검사 - 캐시는 캐시된 사본이 충분히 신선한지 검사하고, 신선하지 않
다면 변경사항이 있는지 서버에게 물어본다.
5. 응답 생성 - 캐시는 새로운 헤더와 캐시된 본문으로 응답 메시지를 만든다.
6. 발송 - 캐시는 네트워크를 통해 응답을 클라이언트에게 돌려준다.
7. 로깅 - 선택적으로, 캐시는 로그파일에 트랜잭션에 대해 서술한 로그 하나를
남긴다.
201P 캐시
GET 요청 플
로 차트
문서 만료
▸서버 Response
▸Expires: Fri, 04, Jul 2002, 05:00:00 GMT
▸서버 시간이 올바르게 설정되어 있지 않다면?
▸Cache-Control: max-age=484200
▸캐시된 문서가 만료 되었다는 것은 문서가 변경 되었다는게 아니고 변경되어 있을 수
있으니 서버에게 물어 재검사 하라는 이야기
▸재검사 할때 앞에 이야기한 If-xxxx-Since, If-xxxx-Match류로 효율적이게 만듬
▸재검사가 통과되면 서버가 변경된 헤더만 보내도 무방
▸HTTP/1.1 클라이언트는 서버가 엔터티 태그를 반환하면 우선 엔터티 태그를 사용한다
. Last-Modified 만 반환하면 If-xxxx-Since를 사용한다.
응답 캐시제어
▸서버는 응답 헤더를 통해 문서가 얼마나 오랫동안 캐시될 수 있게 할것인지 방법을 설정 할 수
있다
▸Cache-Control
▸no-store
▸no-cache
▸must-revalidate
▸max-age, s-maxage
▸Expires
▸datetime
▸None
▸휴리스틱
요청 캐시 제어
Cache-Control: max-stale
Cache-Control: max-stale = <s>
캐시는 만료 시간이 지난 문서도 받아들인다.
느슨한 캐시
Cache-Control: min-fresh = <s>
클라이언트는 최소 시간 후까지 신선한 문서
만 받음. 엄격한 캐시
Cache-Control: max-age = <s>
캐시는 시간 보다 오래된 문서를 반환하면 안
됨. 더 엄격한 캐시
Cache-Control: no-cache
Pragma: no-cache
클라이언트는 문서가 재검사 된 후 받아들일
거다
Cache-Control: no-store 캐시는 최대한 빨리 문서를 삭제 해달라
Cache-Control: only-if-cached 클라이언트는 캐시된 문서를 원한다
HTTP-EQUIV
▸RFC 1866
▸https://tools.ietf.org/html/rfc1866
▸버려짐
계산은 생략!

More Related Content

HTTP 완벽가이드 7장 캐시

  • 2. There are only two hard things in Computer Science: cache invalidation and naming things.Phil Karlton
  • 4. 캐시 혜택 ▸캐시는 불필요한 데이터 전송을 줄여서, 네트워크 요금으로 인한 비용을 줄여 준다. ▸캐시는 네트워크 병목을 줄여준다. 대역폭을 늘리지 안혹도 페이지를 빨리 불러 올 수 있게 된다. ▸캐시는 원 서버에 대한 요청을 줄여준다. 서버는 부하를 줄일 수 있으며 더 빨리 응답할 수 있게 된다. ▸페이지를 먼 곳에서 불러올수록 시간이 많이 걸리는데, 캐시 는 거리로 인한 지연을 줄여준다.
  • 6. 196P 두 단계 캐시 계층으로 문서에 접근하기
  • 8. 캐시 처리 절차 1. 요청 받기 - 캐시는 네트워크로부터 도착한 요청 메시지를 읽는다. 2. 파싱 - 캐시는 메시지를 파싱하여 URL과 헤더들을 추출한다. 3. 검색 - 캐시는 로컬 복사본이 있는지 검사하고, 사본이 없다면 사본을 받아온 다(그리고 로컬에 저장) 4. 신선도 검사 - 캐시는 캐시된 사본이 충분히 신선한지 검사하고, 신선하지 않 다면 변경사항이 있는지 서버에게 물어본다. 5. 응답 생성 - 캐시는 새로운 헤더와 캐시된 본문으로 응답 메시지를 만든다. 6. 발송 - 캐시는 네트워크를 통해 응답을 클라이언트에게 돌려준다. 7. 로깅 - 선택적으로, 캐시는 로그파일에 트랜잭션에 대해 서술한 로그 하나를 남긴다.
  • 9. 201P 캐시 GET 요청 플 로 차트
  • 10. 문서 만료 ▸서버 Response ▸Expires: Fri, 04, Jul 2002, 05:00:00 GMT ▸서버 시간이 올바르게 설정되어 있지 않다면? ▸Cache-Control: max-age=484200 ▸캐시된 문서가 만료 되었다는 것은 문서가 변경 되었다는게 아니고 변경되어 있을 수 있으니 서버에게 물어 재검사 하라는 이야기 ▸재검사 할때 앞에 이야기한 If-xxxx-Since, If-xxxx-Match류로 효율적이게 만듬 ▸재검사가 통과되면 서버가 변경된 헤더만 보내도 무방 ▸HTTP/1.1 클라이언트는 서버가 엔터티 태그를 반환하면 우선 엔터티 태그를 사용한다 . Last-Modified 만 반환하면 If-xxxx-Since를 사용한다.
  • 11. 응답 캐시제어 ▸서버는 응답 헤더를 통해 문서가 얼마나 오랫동안 캐시될 수 있게 할것인지 방법을 설정 할 수 있다 ▸Cache-Control ▸no-store ▸no-cache ▸must-revalidate ▸max-age, s-maxage ▸Expires ▸datetime ▸None ▸휴리스틱
  • 12. 요청 캐시 제어 Cache-Control: max-stale Cache-Control: max-stale = <s> 캐시는 만료 시간이 지난 문서도 받아들인다. 느슨한 캐시 Cache-Control: min-fresh = <s> 클라이언트는 최소 시간 후까지 신선한 문서 만 받음. 엄격한 캐시 Cache-Control: max-age = <s> 캐시는 시간 보다 오래된 문서를 반환하면 안 됨. 더 엄격한 캐시 Cache-Control: no-cache Pragma: no-cache 클라이언트는 문서가 재검사 된 후 받아들일 거다 Cache-Control: no-store 캐시는 최대한 빨리 문서를 삭제 해달라 Cache-Control: only-if-cached 클라이언트는 캐시된 문서를 원한다