https://developer.mozilla.org/ko/docs/Web/HTTP/Caching
→ 캐시와 관련해서 기본적인 개념들
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Cache-Control
→ 캐시 컨트롤 : 요청과 응답 내의 캐싱 매커니즘을 위한 directive
캐싱은 단방향성 : 요청 내에 주어진 디렉티브가 응답 내에 주어진 디렉티브와 동일하다 라는 것을 뜻하지 않는다.
특정 응답과 요청에 대해서 브라우저가 서버에 요청을 하기 전에 캐싱을 한 후 그걸 바라보기도 하는데, 어떤 응답과 요청에 대해서 해당 데이터를 캐싱과 관련해 어떻게 처리할지를 설정한다.
모든 클라이언트에 가까이 요청이 가서 성능이 향상됨. 리소스를 회신하는데 더 적은 시간이 들게 된다.
공유캐시: 한명 이상의 사용자가 재사용할 수 있도록 응답을 저장하는 캐시
사설캐시: 한명의 사용자만 사용하는 캐시
캐시는 브라우저와 프록시 캐시가 있지만, 그 외에도 게이트웨이 캐시, CDN, 리버스 프록시 캐시, 로드밸런서 등이 있다.
Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: min-fresh=<seconds>
Cache-control: no-cache
Cache-control: no-store
Cache-control: no-transform
Cache-control: only-if-cached
Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: min-fresh=<seconds>
Cache-control: no-cache
Cache-control: no-store
Cache-control: no-transform
Cache-control: only-if-cached
핵심 HTTP 캐싱에는 속하지 않는다. 브라우저마다 지원 여부가 다르다.
Cache-control: immutable
Cache-control: stale-while-revalidate=<seconds>
Cache-control: stale-if-error=<seconds>