HTTP Vary 역할
HTTP Vary 헤더는 캐시 결정을 내릴 때 고려해야 할 요청 헤더를 지정합니다. 이 헤더는 캐시 서버나 브라우저에게 응답이 특정 요청 헤더의 값에 따라 달라질 수 있음을 알려주고, 같은 URL 요청이라도 다른 Vary 헤더를 포함하는 요청에 대해서는 별도의 캐시를 유지해야 함을 나타냅니다. 예를 들어, Accept-Encoding이나 User-Agent를 기반으로 다른 응답을 제공할 경우, 이를 Vary 헤더에 포함시켜 적절한 캐싱을 수행할 수 있습니다.
Vary 헤더의 작동 방식
- 서버는 응답과 함께 Vary 헤더를 전송하며, 이 헤더는 어떤 요청 헤더가 응답의 선택에 영향을 미쳤는지 명시합니다.
- 캐시(브라우저 캐시, 프록시 서버 등)는 Vary 헤더에 지정된 요청 헤더와 해당 값이 일치하는 캐시된 응답만을 재사용합니다.
- 만약 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 |