We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
자주 쓰이는 문서의 사본은 자동으로 보관하는 HTTP 장치이다.
304 Not Modified
If-Modified-Since
GET If-Modified-Sice 요청이 서버에 도착했을 때 세 가지 상황
현재시간: 2022-08-27 19:30:00, date 헤더는 9:28:08 이므로 캐시된 것.
date
개인 전용 캐시
공용 캐시
크롬은 URL + :cache 이라고 입력하면, 해당 페이지에서 캐시 콘텐츠의 목록을 볼 수 있다.
캐시 프락시 서버
프락시 캐시
ex) HTTP/1.1 응답을 기대하는 상황에 HTTP/1.0 응답을 반환했다면, 캐시는 그에 맞게 헤더를 번역해야 한다.
Cache-Control
Expires
서버 재검사
조건부 GET
If-None-Match
이런 상황에서 쓰여요
엔터티 태그와 최근 변경일시는 둘 다 캐시 검사기다.
서버는 캐시된 사본을 무효화시키지 않고 문서를 살짝 고칠 수 있도록 허용하고 싶은 경우가 있다.
이때 위 조건들에 "W/"가 붙어있으면 약한 검사기가 되어서 어느정도의 컨텐츠 변경을 허용한다.
약한 검사기
강한 엔터티 태그는 대응하는 엔터티 값이 어떻게 바뀌든 매번 반드시 같이 바뀌는 것이다.
no-cache
no-store
Cache-Control: max-age
Cache-Control: s-maxage
Cache-control: must-revalidate
504 Gatewat Timeout
Cache-control
모든 HTML 파일을 캐시되지 않도록 설정하는 예시
The text was updated successfully, but these errors were encountered:
qkrqudcks7
No branches or pull requests
7. 캐시
웹 캐시란?
자주 쓰이는 문서의 사본은 자동으로 보관하는 HTTP 장치이다.
7.1 불필요한 데이터 전송
7.2 대역폭 병목
7.3 갑작스런 요청 쇄도 (Flash Crowds)
7.4 거리로 인한 지연
7.5 적중과 부적중
7.5.1 재검사 (Revalidation)
304 Not Modified
응답을 보낸다. (재검사 적중)If-Modified-Since
헤더이다.GET If-Modified-Sice 요청이 서버에 도착했을 때 세 가지 상황
재검사 적중
재검사 부적중
객체 삭제
7.5.2 적중률
7.5.3 바이트 적중률
7.5.4 적중과 부적중의 구별
date
헤더를 이용하는 것이다.date
헤더 값과 현재 시각을 비교해서 응답의 생성일이 더 오래되었다면 응답이 캐시된 것임을 알 수 있다.7.6 캐시 토폴로지
개인 전용 캐시
라고 하고, 공유된 캐시는공용 캐시
라고 한다7.6.1 개인 전용 캐시
7.6.2 공용 프락시 캐시
캐시 프락시 서버
혹은 더 흔히프락시 캐시
라고 불리는 특별한 종류의 공유된 프락시 서버이다.7.6.3 프락시 캐시 계층들
7.7 캐시 처리 단계
7.7.1 요청 받기
7.7.2 파싱
7.7.3 검색
7.7.4 신선도 검사
7.7.5 응답 생성
7.7.6 전송
7.7.7 로깅
7.7.8 캐시 처리 플로 차트
7.8 사본을 신선하게 유지하기
7.8.1 문서 만료
Cache-Control
과Expires
라는 헤더들을 이용해서 원 서버가 문서에 유효기간을 붙일 수 있게 해준다.7.8.2 유효기간과 나이
7.8.3 서버 재검사
서버 재검사
라 부른다.7.8.4 조건부 메서드와의 재검사
조건부 GET
이라는 요청을 보낼 수 있도록 해준다.If-Modified-Since
와If-None-Match
조건부 헤더를 사용할 수 있다.7.8.5 If-Modified-Since : 날짜 재검사
304 Not Modified
응답 메세지를 돌려준다.7.8.6 If-None-Match : 엔터티 태그 재검사
7.8.7 약한 검사기와 강한 검사기
엔터티 태그와 최근 변경일시는 둘 다 캐시 검사기다.
서버는 캐시된 사본을 무효화시키지 않고 문서를 살짝 고칠 수 있도록 허용하고 싶은 경우가 있다.
이때 위 조건들에 "W/"가 붙어있으면
약한 검사기
가 되어서 어느정도의 컨텐츠 변경을 허용한다.강한 엔터티 태그는 대응하는 엔터티 값이 어떻게 바뀌든 매번 반드시 같이 바뀌는 것이다.
7.8.8 언제 엔터티 태그를 사용하고 언제 Last-Modified 일시를 사용하는가
7.9 캐시 제어
7.9.1 no-cache와 no-store 응답 헤더
no-cache
와no-store
헤더는 캐시가 검증되지 않은 캐시된 객체로 응답하는 것을 막는다.no-store
는 캐시가 서버응답의 사본을 만드는 것을 막는다.no-cache
는 먼저 서버와 재검사를 하지 않고서는 캐시에서 클라이언트로 제공할 수 없는 것이다.7.9.2 Max-Age 응답 헤더
Cache-Control: max-age
는 신선하다고 간주되었던 문서가 서버로부터 받은 이후로 흐른 시간이고, 초로 나타낸다.Cache-Control: s-maxage
헤더는 똑같지만 공용 캐시에만 적용된다.7.9.3 Expires 응답 헤더
7.9.4 Must-Revalidate 응답 헤더
Cache-control: must-revalidate
헤더는 신선하지 않은 사본을 서버와의 재검사 없이는 제공해서는 안 됨을 의미한다.504 Gatewat Timeout
을 반환해야한다.7.9.5 휴리스틱 만료
7.9.6 클라이언트 신서도 제약
Cache-control
요청 헤더가 추가된 GET 요청을 발생시켜, 강제로 재검사하거나 서버로부터 콘텐츠를 무조건 가져온다.7.10 캐시 제어 설정
7.10.1 아파치로 HTTP 헤더 제어하기
mod_headers
mod_expires
mod_cem_meta
7.10.2 HTTP-EQUIV를 통한 HTML 캐시 제어
The text was updated successfully, but these errors were encountered: