HTTP에서 가장 보기 흉한 부분, Vary 지원을 출시하다

5 hours ago 1

Cloudflare가 모든 요금제의 Cache Rules에 Vary 지원을 추가함. 원본 서버가 응답에 영향을 주는 요청 헤더를 지정하고, 운영자는 각 헤더 값을 캐시에 어떻게 반영할지 결정함 Vary는 같은 URL의 서로 다른 응답을 구분하지만, 어떤 헤더 값의 차이가 실제로 중요한지는 알려주지 않음. 원시 값을 모두 구분하면 동일한 응답이 수많은 캐시 항목으로 흩어져 재사용률이 낮아질 수 있음 헤더별로 normalize, passthrough, bypass 를 선택할 수 있음. 동등한 요청을 정규화해 묶거나, 정확한 값의 차이를 보존하거나, 해당 응답을 캐시에 저장하지 않는 방식임 정규화는 원본 서버의 응답 선택과 캐시 매칭을 일치시키지만, 언어의 지역 구분이나 q=0 제외 조건을 잃을 수 있음. 이러한 차이가 필요한 서비스는 설정을 조정하거나 원시 값을 유지해야 함 원본 서버는 오류와 대체 응답을 포함해 적절한 Vary를 일관되게 반환해야 함. 설정 변경은 기존 캐시를 자동 삭제하지 않으며, 배포 후 형식과 언어의 정확성 및 캐시 적중 여부를 검증해야 함 Vary가 해결하는 문제와 캐시 파편화 Vary 는 원본 서버의 응답에 영향을 줄 수 있는 요청 필드를 중간 캐시에 알리는 표준 HTTP 응답 헤더임 같은 URL에서 언어, 이미지 형식, 압축 방식, 지역별 콘텐츠를 달리 제공할 때 사용함 /catalog가 Accept: text/html에는 HTML을, Accept: application/json에는 JSON을 반환한다면 Vary: Accept로 두 응답을 구분해야 함 이를 무시하면 먼저 저장된 HTML이 API 클라이언트에 전달돼 JSON 파싱이 실패하거나, 브라우저가 웹페이지 대신 API 응답을 받을 수 있음 실제 응답 종류는 적어도 요청 헤더 값은 매우 다양할 수 있음 영어, 프랑스어, 독일어만 제공하는 서버에서 en-US, fr;q=0.8과 fr;q=0.8, en-GB는 모두 영어를 우선하며 같은 응답으로 이어질 수 있음 캐시는 원본 서버가 지역별 언어 태그를 구분하지 않는다는 사실을 알 수 없어 두 값을 안전하게 동일시하기 어려움 변형 수는 여러 필드의 조합으로 증가함. 필드 하나에 값 10개가 있으면 변형은 10개지만, 이런 필드가 3개면 조합은 1,000개가 됨 User-Agent는 값이 많고, 쿠키는 방문자마다 고유할 수 있으며, 선호도 헤더는 순서, 공백과 탭, 품질 값에 따라 달라짐 동...

Read Entire Article