프록시 캐시(Proxy Cache)에 대해 알아보자

초짜의 개발 공부·2021년 11월 30일
0

HTTP

목록 보기
11/11

📌 프록시는 무엇일까??


프록시는 클라이언트와 서버 사이에 대리로 통신을 수행하는 것을 가리켜 프록시(Proxy)라고 하며, 그 중계 기능을 하는 서버를 프록시 서버라고 한다.

클라이언트, 혹은 반대로는 서버가 다른 네트워크에 간접적으로 접속 할 수 있기 때문에, 보안, 캐싱을 통한 성능, 트래픽 분산 등의 장점이 있다.


✏️✏️ 한국에 있는 클라이언트(웹 브라우저)가 외국의 원 서버에 있는 특정 데이터가 필요한 상황이라고 가정해보자.


정보를 가져오기 위해서 많은 시간이 소요될 수 있다. 이 때 외국이 원 서버와 한국 클라이언트의 중간에 위치한 한국의 캐시 서버가 있다면 여기서 데이터를 가져올 수 있기 때문에 시간을 줄일 수 있다. 또한 여러 사람이 찾은 자료일수록 캐시에 이미 등록되어 있으면 빠른 속도로 데이터를 가져올 수 있다.
(국내에 프록시 캐시 서버가 있기 때문에 외국의 원 서버에서 데이터를 가져오는 것보다 빠르다.)

이러한 클라이언트에서 사용하고 저장하는 캐시를 private캐시라 하며 프록시 캐시를 public이라고 한다.



프록시 캐시와 관련된 헤더는 다음과 같다.


Cache-Control (캐시 지시어)


  • Cache-Control:public

    응답이 public 캐시에 저장되어도 된다.

  • Cache-Control:private

    응답이 해당 사용자만을 위한 것, private캐시에 저장해야 한다.(기본값)

  • Cache-Control:s-maxage

    프록시 캐시에만 적용되는 max-age

  • Age: 60 (HTTP 헤더)

    오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간을 뜻한다. (초 단위)


클라이언트가 캐시를 적용하지 않아도 임의로 웹 브라우저가 캐시를 적용하는 경우, 특정 페이지에서 캐시가 되면 안되는 정보가 있다면 어떻게 무효화할까?


캐시 무효화


  • Cache-Control: no-cache

    데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용한다.

  • Cache-Control: no-store

    데이터에 민감한 정보가 있으므로 저장하면 안된다.

  • Cache-Control: must-revaildate

    캐시 만료 후 최초 조회 시 원 서버에 검증해야 한다.
    원 서버 접근 실패 시 반드시 오류가 발생해야 한다. - 504(Gateway Timeout)
    must-revaildate는 캐시 유효 시간이라면 캐시를 사용한다.

  • Pragma: no-cache

    HTTP 1.0 하위 호환이다.

캐시를 확실하게 무효화 해야하는 경우라면 위와 같은 지시어를 적용해야 한다.



✔️✔️ no-cache 와 must-revaildate의 차이점


no-cache는 캐시 서버 요청을 하면 프록시 캐시 서버에 도착하면 원 서버에 요청한다.

만약 프록시 캐시 서버와 원 서버 사이에서 네트워크 단절이 일어나 접근이 불가능하다면, no-cache에서 오류가 아닌 오래된 데이터라도 보여주자라는 개념으로 200OK을 응답으로 내보낸다.

❗️ must-revaildate는 만약 접급이 불가능 하다면 504(Gateway Timeout)라는 오류를 내보낸다. 중요한 정보를 사용할 경우 예전 데이터를 보여준다면 큰 문제가 발생하기 때문에 이러한 경우는 must-revaildate를 적용한다.

0개의 댓글