선릉역 1번 출구
cache: no-cache, no-store, must-revalidate 본문
http header의 Cache-Control의 필요성
- 대부분의 Client(앱, 웹 등등)는 Back-end와 HTTP을 통해 통신을 해서 데이터를 가져오고 사용자에게 UI를 제공함
- server와 client의 연동이라고 볼 수 있음
- Client로 보내는 데이터가 네트워크를 거치기 때문에 시간이 소요됨
- 이때, Client가 이전에 받은 데이터와 새로 요청한 데이터가 같다면 이 과정이 낭비일 수 있으므로 Cache-Control을 사용함
- Server는 부하를 줄이고(요청이 줄기 때문), Client는 네트워크를 거치는 시간을 아낄 수 있음
구조 상 client - cache server - server라면, 요청이 server까지 도달하지 않아도 cache server에서 가져올 수 있기 때문이고, 이미지나 JS 파일은 자주 변하지 않기 때문에 새로 다운로드 시 불필요한 리소스를 낭비하게 됨
- private cache server: 웹 브라우저에 저장되는 캐시로 다른 사람이 접근할 수 없지만 서버 응답 內 Authorization 헤더가 포함되어 있다면 private cache에 저장되지 않음
- public cache server(shared cache): 웹 브라우저와 서버 사이에서 동작하는 캐시를 의미함
- Proxy cache: forward proxy에서 동작하는 캐시
- Managed cache: AWS Cloudfront 혹은 Cloudflare와 같은 CDN 서비스나 리버스 프록시에서 동작하는 캐시
- 포워드 프록시 vs 리버스 프록시
- 포워드 프록시: 클라이언트와 인터넷 사이 위치해서 이로 인해 클라이언트의 정보가 서버측에 노출되지 않음
- 캐싱
- 특정 컨텐츠 액세스 제한
- 리버스 프록시: 로드 밸런싱으로 많이 사용
- 무중단 배포
- DDoS 공격으로부터 보호(서버가 인터넷으로부터 숨겨지기 때문에 외부에서 서버의 IP 확인이 불가함)
- 캐싱: 포워드 프록시와 동일하게 리버스 프록시도 캐싱 기능 수행이 가능함
- 포워드 프록시: 클라이언트와 인터넷 사이 위치해서 이로 인해 클라이언트의 정보가 서버측에 노출되지 않음
그래서 Cache-Control이란?
- HTTP에서 캐시 메커니즘을 지정하기 위해 사용되는 헤더임
- 캐시 유효기간 - max-age: 캐시의 최대 수명 설정 가능(초 단위)
- 캐시 유효성 검증 및 조건부 요청(트래픽 낭비를 줄이기 위해 실제 원본 데이터가 수정 되었을 때만 리소스를 내려 받는 것이 바람직함)
- 리소스의 마지막 갱신 시각으로 검증
- Last-Modified / If-Modified-Since
- 리소스의 식별자를 기준으로 검증
- ETag/If-None-Match
- 리소스의 마지막 갱신 시각으로 검증
- 항상 최신 버전의 리소스만을 제공하고 싶을 경우
- no-cache: 리소스에 대한 캐시를 생성하지만, 리소스 요청 시 원 서버에 항상 캐시 유효성 검증을 하는 옵션
- no-store: 리소스에 대한 캐시를 생성하지 말라는 가장 강력한 Cache-Control 디렉티브(저장하면 안되는 민감 정보일 경우 사용)
- must-revalidate: 캐시 관리자에게 내부 유효성 체크를 허용하지 않고, 항상 Server에 유효성 체크를 하도록 함
*캐시 무효화를 위해서는 no-store만으로도 캐시 무효화가 되어야 하는 것 아닌가?
=> HTTP 스펙이 모든 상황을 완벽하게 정의한 것이 아니기 때문에 조금 더 오래된 브라우저와의 호환성을 위해 no-cache나 must-revalidate를 같이 사용함
참고 사이트
'Cache-Control'이 필요한 이유
앱의 성능을 향상시키는 방법 중 하나인 캐시. 클라이언트에서 캐쉬를 하고, 서버에서 컨트롤이 가능한 Cache-Control에 대해서 알아봅니다.
www.blog-dreamus.com
🌐 웹 브라우저의 Cache 전략 & 헤더 다루기
웹브라우저의 캐시(Cache) 원리 컴퓨터 운영체제에서의 캐시(Cache)는 주기억장치에서 자주 사용하는 프로그램과 데이터를 하드디스크로부터 가져오는데 시간이 많이 걸리니 캐시 저장소에 임시
inpa.tistory.com
'Computer > Web' 카테고리의 다른 글
Apache 취약점 점검 스크립트 작성 (0) | 2024.07.25 |
---|---|
XML and JSON (0) | 2022.08.13 |
HTML table (0) | 2022.07.17 |
HTML 문서와 웹사이트 구조 (0) | 2022.07.16 |
HTML 소개 (0) | 2022.07.16 |
Comments