Cache-Control 헤더 빌더
RFC 9111을 따르는 유효한 Cache-Control 헤더 구성. 필요한 디렉티브 체크(no-cache·no-store·immutable 등), 프레시니스 윈도우 설정(max-age·s-maxage·stale-while-revalidate·stale-if-error), 결과 헤더 복사. 가장 흔한 배포 패턴 4개 프리셋: 불변 정적 자산·비공개 렌더링 페이지·stale 서빙 포함 공개 API 응답·완전 no-store.
—
프리셋
공개 범위
프레시니스 (초)
디렉티브
출력
Cache-Control: public, max-age=3600no-store는 다른 모든 디렉티브 무효화 — 켜져 있으면 no-transform만 추가로 출력.
사용법
- 시나리오에 맞는 프리셋에서 시작, 조정.
- 숫자 필드는 초 단위 — 비우면 해당 디렉티브 생략.
- 결과를 오리진 서버·CDN 룰·프레임워크 응답 헤더에 복사.
자주 묻는 질문
- immutable은 언제 써?
- 파일명에 콘텐츠 해시가 포함된 자산에 긴 max-age(보통 1년)와 함께. 그러면 브라우저가 소프트 리프레시 시 조건부 재검증을 스킵.
- no-cache와 no-store 차이?
- no-cache는 저장된 사본 사용 전 재검증 필요; no-store는 아예 저장 금지. 절대 디스크에 남으면 안 되는 비공개 데이터엔 no-store.
- 헤더를 넣었는데 캐시가 전혀 안 된다. 왜?
- 대부분 세 가지 중 하나다. Set-Cookie가 함께 실린 응답은 공유 캐시가 개인용으로 취급하고 CDN은 대개 건너뛴다. 자격 증명과 함께 보낸 요청은 명시적으로 허용하지 않는 한 공유 캐시가 저장하지 않는다. 그리고 브라우저 새로고침은 헤더와 무관하게 재검증하므로, 강제 새로고침으로 시험하면 언제나 헤더가 무시되는 것처럼 보인다. 대신 새 탭에서 URL을 열어보라.
- Expires나 ETag와는 어떻게 맞물리나?
- 둘 다 있으면 max-age가 Expires를 이긴다. Expires는 Cache-Control을 모르는 아주 오래된 캐시에만 의미가 있다. ETag와 Last-Modified는 아예 다른 장치다. 신선도에는 영향을 주지 않고, 응답이 낡은 뒤의 요청을 싸게 만들어 서버가 본문 없이 304로 답할 수 있게 한다. 두 가지는 함께 쓰라고 있는 것이다.
관련 도구
HTTP 헤더 참조
표준 HTTP 요청·응답·CORS·캐싱·보안·쿠키 헤더 약 50개의 검색 가능한 참조.
개발 0 0
HTTP Basic 인증 인코더/디코더
`username:password`를 Base64 `Authorization: Basic` 헤더로 인코딩 — 또는 기존 헤더 붙여넣어 누군지 확인.
네트워크 0 0
HTTP 상태 코드 레퍼런스
1xx-5xx 모든 HTTP 상태 코드 검색 — 요약·RFC·사용 시점·흔한 함정 포함.
네트워크 0 0
HTTP 쿠키 파서
`Cookie:` 요청 헤더 또는 `Set-Cookie:` 응답 헤더 붙여넣기 → 각 쿠키의 이름·값·속성·경고 표시.
개발 0 0
날짜 포맷 변환
ISO·RFC·Unix epoch·로케일 등 어떤 날짜를 입력해도 14+ 표준 형식을 동시에 표시.
시간 0 0
CORS 헤더 빌더
Access-Control-* 응답 헤더 체크리스트 구성, 4 프리셋·위험한 조합 실시간 경고.
네트워크 0 0