Cache-Control 을 사용해 캐시를 무효화하는 응답을 할 수 있다.
☑️ Cache-Control
: no-cache
☑️ Cache-Control
: no-store
☑️ Cache-Control
: must-revalidate
504 Gateway Timeout
오류가 발생해야 한다. ☑️ Pragma
: no-cache
HTTP 1.0
하위호환용이다.클라이언트가 no-cache
상태로 서버에 데이터를 요청하면 프록시 서버는 no-cache
상태이므로 원 서버(origin 서버)에 요청을 전달한다.
원 서버는 요청에 맞는 응답을 반환한다.
만약, 프록시 캐시 서버가 원 서버에 요청을 보내야하는데 순간적으로 원(origin)서버와 네트워크가 단절되어 접근이 불가능하다면 오류를 보내기 보다는 오래된 데이터로 클라이언트에 응답을 반환한다.
하지만, 요청의 cache-control
값이 must-revalidate
라면 원(origin)서버에 접근이 불가능할 때 504 Gateway Timeout
에러를 발생시켜야 한다.
예컨대, 통장 잔고등 중요한 정보를 원(origin)서버에 문제가 생겼다고해서 이전 잔고를 반환하게하면 심각한 문제가 발생할 수 있다.
정리💡
확실하게 캐시 무효화 응답을 사용하려면no-cache
로 원(origin)서버에서 데이터를 검증하도록하고must-revalidate
를 사용해 원(origin)서버와 통신이 안되면504
에러를 발생하도록 해야한다.
그리고Pragma
를 사용해서HTTP 1.0
이하 버전과의 하위호환도 적용해주면 된다.
[Reference]
김영한 - HTTP 웹 기본지식 강의
개발왕 도던 - 프록시 캐시