긴 프롬프트를 다루는 서비스에서 프리픽스 캐싱은 기본값처럼 켜두는 기능이 됐다. 그런데 이번 분석에서는 "그냥 켜두면 된다"는 전제가 실제로는 절반만 맞는다는 점을 확인했다. 타임스탬프 하나, JSON 키 순서 하나가 캐시 전체를 무효화시키는 구조이기 때문이다.
전체 컨텍스트를 캐싱하는 것과 경계를 끊어 일부만 캐싱하는 것, 어느 쪽이 실제로 이득인가?
결론부터: 정답은 워크로드에 달려 있지만, 기본 전제는 "경계를 명시적으로 관리하지 않으면 전체 캐싱이 손해로 뒤집힐 수 있다"는 쪽이다. 캐시 쓰기 자체가 일반 호출보다 1.25~2배 비싸기 때문에, 같은 프리픽스가 최소 1.4회 이상 재사용되지 않으면 쓰기 프리미엄이 읽기 이득을 잠식한다.
- 캐시 쓰기는 항상 손해를 전제로 시작한다 — 읽기 재사용이 그 손해를 메워야 이득이 남는다
- 손익분기점은 대략 "쓰기 1회당 읽기 1.4회 이상"이다
- 동적 콘텐츠(타임스탬프·키 순서·툴 토글)가 프리픽스 경계에 걸리면 무효화가 반복된다
- 시스템 프롬프트만 캐싱하는 전략이 비용·지연 양쪽에서 가장 변동성이 낮았다
- OpenAI 계열은 1,024토큰 미만 요청에서는 캐싱 자체가 발동하지 않는다
두 전략을 나란히 놓으면 차이가 분명해진다. 전체 캐싱은 구현이 단순하고 프리픽스가 안정적일 때(문서 임베딩, 고정 few-shot 등) 강하다. 경계 분리 캐싱은 구현 비용이 들지만 동적 필드가 섞인 에이전트 세션, 툴 정의가 자주 바뀌는 워크플로우에서 우위를 가진다.
무효화는 정확히 어디서, 왜 발생하는가?
무효화는 프리픽스 경계 앞뒤에 삽입된 동적 값 때문에 발생한다. 타임스탬프 삽입, JSON 키 순서 변경, 도구 정의 토글, 이미지 세부 설정 변경이 대표적 트리거다. 이 값들이 캐시 경계 "안쪽"에 들어가면 해시가 매번 달라져 전체를 정가로 다시 계산한다. 문제는 이 트리거들이 대부분 개발 편의를 위해 무심코 넣는 값이라는 점이다 — 로그용 타임스탬프, 요청 순서 보장용 키 정렬이 캐시를 죽이는 원인이 된다.
쓰기 프리미엄과 손익분기점은 어떻게 계산되는가?
Anthropic은 5분 TTL 기준 1.25배, 1시간 TTL은 2배의 쓰기 할증을 적용하고, OpenAI GPT-5.6 계열도 1.25배 수준이다. 캐시 읽기는 반대로 90% 할인(정가의 10%)까지 내려간다. 이 구조에서 쓰기 1회의 손실을 상쇄하려면 같은 프리픽스가 최소 1.4회 이상 다시 읽혀야 한다는 계산이 나온다. 재사용 횟수가 이보다 적은 프리픽스를 캐싱 대상으로 삼으면, 캐싱을 켜지 않은 것보다 총비용이 늘어난다.
TTL과 최소 토큰 조건이 실제로 캐시를 무력화하는가?
무력화한다. 기본 TTL은 Anthropic·OpenAI 모두 5분이며, 읽기 성공 시 갱신되지만 30분 이상 비활성 상태면 캐시가 소멸한다. 여기에 OpenAI는 1,024토큰 미만 요청에서는 캐싱 자체가 활성화되지 않아 짧은 프롬프트는 애초에 이 논의의 대상이 아니다. 즉 짧은 호출 간격을 유지하지 못하는 세션, 혹은 프롬프트 길이가 임계값 아래인 세션은 전략과 무관하게 캐시 이득을 얻지 못한다.
명시적 경계 분리는 실제로 얼마나 차이를 내는가?
OpenAI GPT-5.6의 explicit cache breakpoint는 동적 콘텐츠가 들어갈 지점을 미리 끊어 정적 프리픽스와 분리한다. 여기에 30분 최소 캐시 수명을 지원해 TTL 만료로 인한 재쓰기 빈도도 줄인다. 학술 벤치마크("Don't Break the Cache")에서는 이런 경계 관리를 적용한 3개 프로바이더 조합이 41~80% 비용 절감, 13~31% 지연 감소를 기록했는데, 이는 전체 캐싱 시 발생하는 41~80%의 편차 폭 자체가 "경계를 어떻게 그었는가"에 좌우된다는 뜻이기도 하다 OpenAI 프롬프트 캐싱 가이드.
수치로 보면 두 전략은 얼마나 차이 나는가?
| 조건 | 비용 절감 | TTFT 감소 |
|---|---|---|
| Anthropic, 100K 토큰 문서 재사용 | 90% | 85% (11.5초→2.4초) |
| OpenAI GPT-5, 500+ 에이전트 세션 | 50~90% | 최대 80% |
| 3개 프로바이더, 경계 관리 벤치마크 | 41~80% | 13~31% |
| vLLM Prefix Caching, 캐시 히트 시 | 5~12배 | 해당 없음 |
| vLLM + FP8/LMCache, 롱컨텍스트 | 4~40배 | 해당 없음 |
| SGLang-LSM, 대규모 동적 워크로드 | 해당 없음 | 24% (히트율 143%↑) |
수치 편차 폭 자체가 신호다. 같은 "프리픽스 캐싱"이라도 경계 설계에 따라 결과가 두 배 넘게 갈린다 Anthropic 공식 문서.
경계 분리 전략으로 옮길 때 실제로 드는 비용은 무엇인가?
가장 먼저 드는 비용은 요청 페이로드 재설계다. 정적 프리픽스(시스템 메시지, 문서)와 동적 파라미터를 분리된 필드로 보내야 하고, JSON 직렬화 시 키 순서를 고정(OrderedDict 등)하는 코드가 추가로 필요하다. 라우팅 레이어를 쓰는 경우 LLM-d 같은 KV 캐시 인지 라우팅을 도입해야 하는데, 이는 Kubernetes 기반 인프라 구성 변경을 동반한다. 3계층 캐시(프로바이더 프리픽스 캐시·시맨틱 캐시·vLLM KV 프리픽스 캐시)를 쌓는 구조로 가면 계층 간 정합성 관리 비용도 늘어난다.
그래서 언제 전체 캐싱이 맞고, 언제 경계 분리가 맞는가?
프리픽스가 안정적이고 세션 간 재사용 빈도가 손익분기점(1.4회)을 확실히 넘는다면 전체 캐싱만으로 충분하다. 반대로 타임스탬프·툴 토글·JSON 동적 필드가 프리픽스 근처에 섞여 있고, 요청 간격이 TTL(5분~30분)을 자주 넘긴다면 경계 분리 없이는 캐싱 자체가 역효과를 낸다. 2026년 기준 두 전략 중 어느 쪽도 기본값으로 항상 옳지 않으며, 판단 기준은 "동적 필드의 위치"와 "재사용 빈도" 두 축으로 좁혀진다.
핵심 정리
- 캐시 쓰기는 1.25~2배 할증이며, 손익분기점은 읽기 1.4회 이상 재사용이다
- 무효화 트리거는 타임스탬프·JSON 키 순서·툴 토글 등 프리픽스 경계 근처의 동적 값이다
- OpenAI 계열은 1,024토큰 미만, 30분 이상 비활성 세션에서 캐시 이득을 얻지 못한다
- 경계 분리(explicit breakpoint, 시스템 프롬프트 전용 캐싱)는 비용·지연 변동성을 가장 낮춘다
- 판단은 "동적 필드 위치"와 "재사용 빈도" 두 축으로 결정하며, 어느 전략도 기본 정답은 아니다
더 알아보기
LLM 추론 서빙: 처리량과 지연의 트레이드오프를 보는 법 — 이 주제의 종합 가이드