ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 캐시와 조건부 요청
    Web 2022. 7. 6. 22:32

    캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

     

     

    >> 서버 요청 후 응답으로 얻은 파일 등을 저장해두고 같은 요청을 보낼 때 저장된 캐시를 불러옴으로써 네트워크 자원과 시간을 절약하는 방식이다.

     

    조건부 요청

    캐시 유효시간이 끝나서 서버에 다시 요청하는 경우

    - scenario 1) 기존 데이터가 변경 되었다

    - scenario 2) 기존 데이터가 변경 되지 않았다

     

    기존 데이터가 변경되지 않았을 경우 다시 불러올 필요가 없다.

    그러므로 조건부 요청을 통해 데이터를 새로 불러오지 않을 수 있다.

     

    • if-modified-since
      : 마지막으로 수정된 시각을 기준으로 판단한다. 
    • ETag(Entity Tag)
      : 캐시용 데이터에 임의의 고유한 버전 이름을 달아둔다. 
      ETag가 같으면: 헤더만 전송한다.
      ETag가 다르면: 바뀐 데이터를 전송한다.

     

     

    데이터가 변경되지 않았을 경우: 304 Not Modified

    데이터가 변경되었을 경우: 200 OK

     

     

    프록시 캐시

     

    1) 미국에 있는 원 서버에 직접 접근할 경우 0.5초가 소요된다.

     

    2) 가까운 곳에 프록시 캐시 서버를 두고 요청을 보내면 더 짧은 시간에 응답을 받을 수 있다.

    프록시 캐시 서버에 저장되지 않은 데이터의 경우, 원 서버에 요청을 보내며 이 경우 0.5초가 소요된다.

     

    멀리 떨어진 원 서버에 매번 직접 요청을 보내는 것 보다 가까운 프록시 캐시 서버에 접근하여 public 캐시를 받아오는 것이 더 효율적이다.

     

    Cache-Control

    • no-cache: 데이터는 캐시해도 되지만 항상 원 서버에 검증하고 사용한다.
    • no-store: 저장하면 안된다.
    • must-revalidate: 캐시 만료 후 최초 조회시 원 서버에 검증해야 한다.

     

    pragma: no-cache

    'Web' 카테고리의 다른 글

    HTTP 헤더  (0) 2022.07.06
    Http 상태 코드  (0) 2022.07.06
Designed by Tistory.