no-cache: 캐시를 사용하지만 서버에 매번 요청을 해 해당 캐시가 최신화된 캐시인지 검사를 받는 것이다. Etag랑 함께 쓰여 Etag가 변하면 새로운 자원을 가져온다.
no-store: 아예 캐시를 사용하지 않는 것이다.
must-revalidate: 만료된 캐시 데이터에 대해서 서버에게 유효성 재검증을 받는다.
max-age: 캐시 데이터의 유효 시간을 설정, 유효 시간 만료 후에는 캐시 데이터가 만료된다.
Etag: 캐시가 만료되었을 때, 서버에 다시 자원을 요청하게 되는데 Etag가 동일한 경우라면 서버에서 다운받지 않고 캐시되어 있던 자원을 사용할 수 있도록 해준다.
캐시 무효화를 위해 no-store만 사용해도 될 것 같은데 no-cache, must-revalidate까지 사용하는 이유