Skip to main content Link Search Menu Expand Document (external link) Copy Copied

왜 캐시를 사용해야 하는가?

  • 캐시 사용으로 네트워크를 적게 사용할 수 있다.
  • 네트워크 사용량을 줄일 수 있다.
  • 브라우저 로딩 속도가 빨라진다.
  • 사용자에게 빠른 경험을 제공할 수 있다.

캐시 유효시간이 끝나면 무조건 새로 받아와야 하나?

캐시 유효 시간이 초과해도 서버의 데이터가 바뀌지 않았다면, 서버는 304 Not Modified와 함께 헤더 메타 정보만 응답한다. 클라이언트는 이 정보를 바탕으로 캐시의 메타 정보를 갱신하고 캐시에 저장된 데이터를 재사용한다.


검증 헤더와 조건부 요청 헤더는 무엇인가?

  • 검증 헤더: 캐시 데이터와 서버 데이터가 같은지 확인하는 데이터. Last-Modified, ETag 등이 있다.
  • 조건부 요청 헤더: 검증 헤더를 이용하여 조건에 따라 분기하는 헤더. If-Modified-Since, If-None-Match 등이 있다.

Entity Tag(ETag)란 무엇인가?

ETag는 캐시 데이터에 붙은 고유한 버전 이름이다. 서버는 이 태그를 확인하여 데이터가 같으면 그대로 사용하고, 다르면 새로 받는다.


캐시 제어 헤더의 종류는?

  • Cache-Control: 캐시 지시어를 포함하는 헤더.
  • Pragma: 캐시 제어를 위한 헤더(하위 호환).
  • Expires: 캐시 유효기간을 정하는 헤더(하위 호환).

캐시 지시어의 종류는?

  • Cache-Control: max-age: 캐시 유효 시간을 초 단위로 지정.
  • Cache-Control: no-cache: 데이터는 캐시해도 되지만, 항상 원본 서버에 검증하고 사용.
  • Cache-Control: no-store: 데이터에 민감한 정보가 있으면 저장하지 않음.

프록시 캐시 서버를 위한 지시어

  • Cache-Control: public: 응답이 public 캐시에 저장되어도 됨.
  • Cache-Control: private: 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함.
  • Cache-Control: s-maxage: 프록시 캐시에만 적용되는 유효시간.
  • Age: 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간(초).

확실한 캐시 무효화 응답

  • Cache-Control: no-cache, no-store, must-revalidate
  • Pragma: no-cache

이 응답은 오리진 서버와 네트워크 단절 시 오래된 데이터도 보이지 않으며 항상 오류가 나며 매번 검증을 받아야 한다.


프록시 캐시 서버란?

Origin 서버와 클라이언트 사이의 트래픽을 효율적으로 다루기 위한 캐시를 이용한 서버다.