8. HTTP 헤더 2 – 캐싱 및 조건부 요청 관련 이미지

8. HTTP 헤더 2 – 캐싱 및 조건부 요청

캐시가 없을 때

  • 데이터가 변경되지 않더라도 네트워크를 통해 지속적으로 데이터를 다운로드해야 합니다.
  • 인터넷 네트워크는 매우 느리고 비쌉니다.
  • 브라우저가 느리게 로드됩니다.
  • 느린 사용자 경험

적용된 캐시

  • 요청이 들어오면 서버에서 캐시 제어:최대 연령=60 다음과 같이 캐시가 유효한 시간을 지정합니다.
  • 응답 결과를 브라우저 캐시에 저장(60초 이내 유효)
  • 2차 요청 들어오면 캐시 만료 시간 확인 후 유효한 경우 캐시에서 조회(네트워크 x 필요)
  • 캐싱 덕분에 캐시 가능한 시간 동안 네트워크를 사용할 필요가 없습니다.
  • 비용이 많이 드는 네트워크 사용량을 줄일 수 있습니다.
  • 브라우저가 매우 빠르게 로드됩니다.
  • 빠른 사용자 경험
  • 3번째 요청이 들어오면 유효기간이 만료됩니다. 캐시 시간 초과만약 그러하다면?
  • 응답 결과를 다시 캐시에 저장합니다.
  • 캐시의 유효 기간이 초과되면 서버에서 데이터를 검색하고 캐시를 업데이트합니다.
  • 이때 네트워크 다운로드가 다시 발생했습니다.
  • 그러나 클라이언트가 보유한 데이터와 서버가 보유한 데이터가 변경되지 않은 경우 동일합니까?

캐시 시간 초과

  • 캐시 만료 시간이 초과되어 다시 서버에 요청하면 다음 두 가지 상황이 발생합니다.
    1. 서버의 기존 데이터 변경 → 캐시 다시 조회 및 업데이트
    2. 서버의 기존 데이터는 변경되지 않습니다.
      • 캐시된 데이터가 변경되지 않았는지 확인할 수 있어야 합니다. → 확인 헤더 추가

인증 헤더


8. HTTP 헤더 2 – 캐싱 및 조건부 요청 관련 대표 이미지

  • 서버 → 브라우저 전송 및 브라우저 캐시에 저장
  • 캐시에 (마지막 변경: 2020년 10월 11일 10:00:00) 저장됨 (인증 헤더)

조건부 요청


8. HTTP 헤더 2 – 캐싱 및 조건부 요청 관련 이미지

  • 캐시 시간 초과(수정된 경우: 2020년 11월 10일 10:00:00) 발송 (조건부 요청)
  • 고쳐지지 않는다면? → 본문 없이 헤더만 보내기 → 용량을 대폭 줄일 수 있습니다!


8. HTTP 헤더 2 – 캐싱 및 조건부 요청 관련 이미지

정리하다

  • 캐시 만료일 이후에도 서버의 데이터가 업데이트되지 않은 경우,
  • 304 Not Modified + 헤더 메타 정보 전용 응답(BodyX)
  • 클라이언트는 서버에서 보낸 응답 헤더 정보로 캐시 메타 정보를 업데이트합니다.
  • 클라이언트가 캐시된 데이터 회수
  • 결과적으로 네트워크 다운로드가 발생하지만 작은 헤더만 발생합니다.
  • 매우 실용적인 솔루션

헤더 및 조건부 요청 유효성 검사

  • 인증 헤더
    • 캐시된 데이터와 서버 데이터가 동일한 데이터인지 확인
    • 마지막 변경, 상표
  • 조건부 요청 헤더
    • 유효성 검사 헤더가 있는 조건 분기
    • If-수정된 이후 : 마지막 수정 시간 사용
    • 일치하지 않는 경우 : Etag 사용
    • 200 조건이 충족되면 OK
    • 304 조건이 충족되지 않으면 수정되지 않음

If-Modified-Since : 이후에 데이터가 수정되었습니까?

  • 데이터 변경 예
    • 캐시: 2020년 11월 10일 10:00:00 & 서버: 2020년 11월 10일 10:00:00
    • 304 Not Modified, 헤더 데이터만 전송(BODY 없음) → 304: 리디렉션(= 캐시로 이동)
    • 전송용량 0.1M(헤더 0.1M, 바디 1.0M)
  • 데이터 변경 예
    • 캐시: 2020년 11월 10일 10:00:00 및 서버: 2020년 11월 10일 11:00:00
    • 200 OK, 모든 데이터 전송(BODY 포함)
    • 전송용량 1.1M(헤더 0.1M, 바디 1.0M)

Last-Modified, If-Modified-Since 단점

  • 1초 미만(0.x초) 단위로 캐시 튜닝을 할 수 없습니다.
  • 날짜 기반 논리 사용
  • 데이터 수정 날짜는 다르지만 동일한 데이터를 수정한 결과가 동일한 경우(A→B→A)
  • 서버에서 별도의 (임의) 캐싱 로직을 관리하고 싶은 경우
    • ex) 공백이나 주석과 같은 사소한 변경에 의해 영향을 받지 않고 캐시를 유지하려는 경우.

Etag, 일치하지 않는 경우

  • 엔터티 태그(Etags)
  • 캐시된 데이터에 대한 임의의 고유한 버전 이름
    • 예) Etag: “v1.0”, Etag: “a2jiodwjekjl3” (파일에 해시 추가)
  • 데이터가 변경되면 이름을 변경하여 변경(Hash 재생성)
    • 예) Etag: “aaaaa” → Etag: “bbbbb”
  • Etag를 보내고, 같으면 보관하고, 같지 않으면 다시 가져가는 정말 간단한 방법입니다(날짜보다 훨씬 편리함)


8. HTTP 헤더 2 – 캐싱 및 조건부 요청 관련 이미지


8. HTTP 헤더 2 – 캐싱 및 조건부 요청 관련 이미지

정리하다

  • 정말 간단합니다. ETag를 서버로 보내고, 같으면 보관하고, 다르면 다시 받아오면 됩니다.
  • 서버에서 완전히 관리하는 캐시 제어 로직
  • 클라이언트는 이 값을 서버에 제공할 뿐입니다(클라이언트는 캐싱 메커니즘을 인식하지 못함).
  • 전임자)
    • 오픈 베타 기간 3일 동안 파일이 변경되더라도 서버는 ETag를 변경하지 않고 유지합니다.
    • 모든 ETag는 애플리케이션 배포 주기에 따라 업데이트됩니다.

캐싱 및 조건부 요청 헤더

  • 캐시 제어 : 캐시 제어
  • Pragma : 캐시 제어(역호환성)
  • 만료: 캐시 유효 기간(하위 호환성)

캐시 제어

  • 캐시 제어: 최대 연령
    • 캐시 유효 시간(초)
  • 캐시 제어: 캐시 없음
    • 데이터는 캐싱될 수 있지만 항상 검증되고 원본 서버와 함께 사용됩니다.
  • 캐시 제어: 스토리지 없음
    • 데이터에는 민감한 정보가 포함되어 있으므로 저장해서는 안 됩니다.
    • (메모리에서 사용하고 가능한 한 빨리 삭제하십시오)

실용주의

  • Cache-Control(이전 버전과 호환)
  • 프라그마: 캐시 없음
  • HTTP 1.0과 하위 호환 → 거의 사용되지 않음

만료됨

  • 캐시 만료 날짜를 정확한 날짜로 설정(하위 호환성)
  • 만료: 1990년 1월 1일 월요일 00:00:00 GMT
  • HTTP 1.0부터 사용
  • 이제 더 유연한 캐시 제어: max-age 권장
  • Cache-Control: max-age와 함께 사용하면 만료가 무시됩니다.

정리하다

  • 유효성 검사기 헤더
    • ETag: “v1.0”, ETag: “asid93jkrh2l”
    • 마지막 수정: 2020년 6월 4일 목요일 07:19:24 GMT
  • 조건부 요청 헤더
    • If-Match, If-None-Match: Etag 값 사용
    • If-Modified-Since, If-Unmodified-Since: Last-Modified 값 사용

프록시 캐시

  • 서버에 직접 액세스
    • 원본 서버
  • 프록시 캐시 서버에 대한 액세스(공용 캐시) 로컬 또는 웹 브라우저에 저장된 캐시(개인 캐시)
    • 한국 어딘가…
    • 프록시 캐시 서버 – 미국의 원본 서버

캐시 제어/캐시 지시어 – 기타

  • 캐시 제어: 공개
    • 응답은 공개 캐시에 저장될 수 있습니다.
  • 캐시 제어: 비공개
    • 응답은 해당 사용자에게만 해당됩니다. 개인 캐시에 저장해야 함(기본값)
  • 캐시 제어: s-maxage
    • max-age는 프록시 캐시에만 사용됩니다.
  • 연령: 60세(HTTP 헤더)
    • 원본 서버 응답 후 프록시 캐시에서 소요된 시간(초)

캐시 무효화

캐시 제어/보장된 캐시 무효화 응답

캐시 제어: 캐시 없음, 스토리지 없음, 재검증해야 함
프라그마: 캐시 없음
  • 캐시 제어: 캐시 없음, 스토리지 없음, 재검증해야 함
  • 프라그마: 캐시 없음
    • HTTP 1.0 이전 버전과 호환 가능
  • 캐시 제어: 캐시 없음
    • 데이터는 캐싱될 수 있지만 항상 검증되고 원본 서버에서 사용됩니다(이름 참고!).
    • 원본 사이트에 도달할 수 없는 경우 캐시 서버의 설정에 따라 캐시된 데이터가 반환될 수 있습니다.
    • (오류 대신 이전 데이터를 보여줍시다!)
  • 캐시 제어: 스토리지 없음
    • 데이터에는 민감한 정보가 포함되어 있어 저장해서는 안됩니다(메모리에 사용 후 가능한 한 빨리 삭제).
  • 캐시 제어: 재검증해야 함
    • 캐시가 만료된 후 첫 번째 쿼리는 원본 서버로 인증해야 합니다.
    • 원본 사이트에 액세스할 수 없으면 확실히 오류 보고 – 504(게이트웨이 시간 초과)
    • must-revalidate는 캐시 만료 시간인 경우 캐시를 사용합니다.
  • 프라그마: 캐시 없음
    • HTTP 1.0 이전 버전과 호환 가능

Similar Posts

  • 공릉동갈비맛집[금] 방문후기_ft.쪽갈비후라이드

    #족갈비후라이드 #공릉동고깃집 #공릉동족갈비맛집 #공릉금족갈비 #과기대맛집 #공릉정육점추천 #공릉단체회식 #노원족갈비 #서이환영TO.잇씨들 안녕하세요 나날이 뚱뚱해지는 진국입니다 오늘은 공릉동 핫스팟으로 유명해진 곳!!쪽갈비 맛집 금쪽을 소개해 드리도록 하겠습니다.포스팅을 보신 분들은…팅크의 취미가 볼링이라는 것을 많은 이들이 알고 계실 거예요!!이날도 볼링클럽 멤버들이랑 볼링친 게임하고 저녁에 뭐 먹을까? 고민하셨군요..방문하게된 공릉동 쪽갈비 맛집 ‘금쪽진’..이곳 방문 후기 부탁드립니다~ 매장에 보시면 넓은 유리로 되어있어서 너무 좋아요~(단체회식에도…

  • 음악 감상을 위한 3가지 앱

    좋아하는 음악을 쉽게 찾고 스트리밍할 수 있는 훌륭한 음악 앱을 소개합니다. Spotify – Spotify는 가장 인기 있는 음악 스트리밍 플랫폼 중 하나입니다. 수백만 곡의 노래와 재생 목록을 제공하며 맞춤 추천을 통해 원하는 음악을 더 쉽게 찾을 수 있습니다. Apple Music – Apple Music은 Apple 기기와 원활하게 통합되는 음악 스트리밍 서비스입니다. 라디오 및 음악 추천과 함께…

  • 과학자들은 우리 태양계 밖에서 새로운 행성을 발견

    태양계 밖의 새로운 행성 수세기 동안 인간은 태양계 너머에 있는 다른 행성의 가능성에 매료되었습니다. 현대 기술의 출현으로 과학자들은 태양계 너머의 행성을 탐험하고 발견할 수 있게 되었습니다. 최근 발견에서 과학자들은 우리 태양계 밖의 새로운 행성을 발견했습니다. 열려 있는 외계 생명체에 대한 새로운 가능성을 찾는 것. 발견하다 TOI-257b라고 명명된 새로운 행성은 NASA의 TESS(Transiting Exoplanet Survey Satellite)의 과학자…

  • 여성방광염제 맘노스클랜베리, 아조(가격, 구매방법, 효과)

    지난 게시물에서는 임신 중 방광염 약과 출산 후 먹는 방광염 약에 대해 이야기했습니다.https://blog.naver.com/cocori8863/222847389071 임신 중 방광염(여성 방광염약 추천) 산부인과 진료 전 무조건 체중과 혈압을 측정하지만 중·하반기가 되면 소변검사도 하게 됩니다. 소변…blog.naver.com 방광염에는 크랜베리 방광염에 효과가 있는 약을 검색해 보니 크랜베리에 관한 기사와 효과에 대한 리뷰가 발견되었습니다.헬스조선 크랜베리 효능에 대한 기사에서 방광염에 관한 부분을 발췌했습니다. 방광염의…

  • 빈센트 반 고흐(1853-1890) 출생

    빈센트 반 고흐의 생애 빈센트 반 고흐 빈센트 반 고흐(1853-1890)는 네덜란드 후기 인상주의 화가입니다. 역사상 가장 위대한 예술가 중 한 명으로 널리 알려져 있습니다. 대담한 색상, 대담한 붓놀림, 강한 감정이 특징인 그의 작품은 예술계에 파문을 일으켰습니다. 그것은 심오한 영향을 미쳤으며 오늘날에도 계속해서 사람들을 사로잡고 있습니다. 빈센트 반 고흐는 1853년 3월 30일 네덜란드에서 태어났습니다. 에서 태어난…