2. There are only two
hard things in
Computer Science:
cache invalidation
and naming things.Phil Karlton
4. 캐시 혜택
▸캐시는 불필요한 데이터 전송을 줄여서, 네트워크 요금으로
인한 비용을 줄여 준다.
▸캐시는 네트워크 병목을 줄여준다. 대역폭을 늘리지 안혹도
페이지를 빨리 불러 올 수 있게 된다.
▸캐시는 원 서버에 대한 요청을 줄여준다. 서버는 부하를 줄일
수 있으며 더 빨리 응답할 수 있게 된다.
▸페이지를 먼 곳에서 불러올수록 시간이 많이 걸리는데, 캐시
는 거리로 인한 지연을 줄여준다.
8. 캐시 처리 절차
1. 요청 받기 - 캐시는 네트워크로부터 도착한 요청 메시지를 읽는다.
2. 파싱 - 캐시는 메시지를 파싱하여 URL과 헤더들을 추출한다.
3. 검색 - 캐시는 로컬 복사본이 있는지 검사하고, 사본이 없다면 사본을 받아온
다(그리고 로컬에 저장)
4. 신선도 검사 - 캐시는 캐시된 사본이 충분히 신선한지 검사하고, 신선하지 않
다면 변경사항이 있는지 서버에게 물어본다.
5. 응답 생성 - 캐시는 새로운 헤더와 캐시된 본문으로 응답 메시지를 만든다.
6. 발송 - 캐시는 네트워크를 통해 응답을 클라이언트에게 돌려준다.
7. 로깅 - 선택적으로, 캐시는 로그파일에 트랜잭션에 대해 서술한 로그 하나를
남긴다.
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 클라이언트는 캐시된 문서를 원한다