캐시 처리단계
1.요청받기
2.파싱
3.검색
4.신선도 검사
5.응답 생성
6.발송
7.로깅
브라우저에서 캐시를 저장할 땐 헤더에 cache-control 속성을 통해
캐시가 유효한 시간을 지정할 수 있다.
캐시 장점
캐시는 불필요한 데이터 전송을 줄여서, 네트워크 요금으로 인한 비용을 줄여준다.
캐시는 원 서버에 대한 요청을 줄여주고
서버는 부하를 줄일 수 있으며 더 빨리 응답할 수 있게 된다.
브라우저 로딩 속도가 매우 빠르다
조건부 GET
서버가 갖고있는 문서가 캐시가 갖고있는것과 다른 경우에 객체 본문을 보내달라고 하는것
HTTP 다섯가지 조건부 요청헤더
- IF-Match
- IF-None-Match (v)
- IF-Modified-Since (v)
- IF-Unmodified-Since
- IF-Range
모든 조건부헤더는 ‘IF-‘ 로 시작한다
Last Modified & IF-Modified_Since
ETag & IF-None-Match
no-cache와 must-revalidate 모두 원 서버에 검증해야하지만 그에 대한 응답에 대해 다른 점이 있다
no-cache
캐시 서버 요청을 하게되고 프록시 캐시 서버에 도착하면 no-cache인 경우 원 서버에 요청을 하게 된다.
그리고 원 서버에서 검증 후 304 응답을 하게 된다.
만약 프록시 캐시 서버와 원 서버간 네트워크 연결이 단절되어 접근이 불가능 하다면,
no-cache에서는 응답으로 오류가 아닌 오래된 데이터라도 보여주자라는 개념으로 200OK으로 응답을 한다.
must-revalidate
원 서버에 접근이 불가할 때 504 Gateway Timeout 오류를 보낸다.
통장 잔고 등 중요한 정보가 원 서버를 못 받았다고 해서 예전 데이터로 뜬다면
큰 문제가 생기기때문에 이런 경우 must-revalidate를 써야 한다.
HTTP헤더에 정말 많은 내용들이 담겨있으며 만약 페이지를 구현할 시에는 어떤 페이지를 만들고자에 맞추어서 상황에 맞게 잘 사용해야 할 것 같다.
네트워크는 이론이 중요한거 같아 책과 MDN을 참고하여 다른 내용도 확인해 보아야 할 것 같다.