본문 바로가기
IT/web

[http] vary header로 dynamic cache 다루기

by 내일은교양왕 2024. 5. 14.

HTTP Vary 역할

HTTP Vary 헤더는 캐시 결정을 내릴 때 고려해야 할 요청 헤더를 지정합니다. 이 헤더는 캐시 서버나 브라우저에게 응답이 특정 요청 헤더의 값에 따라 달라질 수 있음을 알려주고, 같은 URL 요청이라도 다른 Vary 헤더를 포함하는 요청에 대해서는 별도의 캐시를 유지해야 함을 나타냅니다. 예를 들어, Accept-Encoding이나 User-Agent를 기반으로 다른 응답을 제공할 경우, 이를 Vary 헤더에 포함시켜 적절한 캐싱을 수행할 수 있습니다.

 

Vary 헤더의 작동 방식

  1. 서버는 응답과 함께 Vary 헤더를 전송하며, 이 헤더는 어떤 요청 헤더가 응답의 선택에 영향을 미쳤는지 명시합니다.
  2. 캐시(브라우저 캐시, 프록시 서버 등)는 Vary 헤더에 지정된 요청 헤더와 해당 값이 일치하는 캐시된 응답만을 재사용합니다.
  3. 만약 Vary 헤더에 명시된 요청 헤더의 값이 다른 요청이 들어올 경우, 캐시는 그 요청을 위한 새로운 응답을 저장하고 관리합니다.

테스트 코드

app.get('/', (req, res) => {
  // Vary 헤더 설정
  res.setHeader('Vary', 'User-Agent');

  // User-Agent에 따라 다른 응답을 제공
  const userAgent = req.headers['user-agent'];
  if (userAgent.includes('Mozilla')) {
    res.send('Response for Mozilla-based browsers.');
  } else {
    res.send('Response for other browsers.');
  }
});

 

Mozilla browser일 때

 

Opera browser 일 때

 

'IT > web' 카테고리의 다른 글

[html] dns-prefetch  (0) 2024.06.19
[web] image lazy loading 기법  (0) 2024.05.16
[http] cache-control: max-age  (0) 2024.05.14
[http] no-store, no-cache  (0) 2024.05.13
[http] If-Modified-Since, If-None-Match  (0) 2024.05.13