Shared Dictionaries: 에이전트 웹을 따라잡는 압축
핵심 내용
Cloudflare가 공유 dictionary 압축으로 재배포된 JS를 수 KB 수준으로 줄인다.
자세히 보기
Cloudflare는 웹이 더 무겁고, 더 자주 재배포되며, 더 많은 agentic crawler가 반복 요청하는 방향으로 바뀌자, 기존 compression만으로는 중복 전송을 줄이기 어렵다고 본다. 같은 애플리케이션이 작은 수정만 거쳐도 번들 이름이 바뀌면서 캐시가 무력화되고, 매 배포마다 거의 전체 파일이 다시 내려간다.
Shared Dictionaries는 이전에 캐시된 버전을 dictionary로 삼아 새 버전의 차이만 전송하는 방식이다. 브라우저가 먼저 받은 리소스를 기억해 두고, 다음 요청에서 Available-Dictionary를 보내면 서버는 그 버전을 기준으로 delta compression을 수행한다. 결과적으로 큰 JS bundle도 변경분만 수 KB로 줄어들 수 있다.
이 아이디어는 새 것이 아니다. 과거 SDCH는 2008년 Chrome에 도입됐지만, CRIME·BREACH 같은 side-channel 위험과 Same-Origin Policy, CORS, Cache API와의 충돌 같은 구조적 문제로 2017년에 중단됐다. 현재 표준인 RFC 9842: Compression Dictionary Transport는 같은 origin에만 dictionary를 허용해 보안 설계를 정교하게 다듬었고, Chrome과 Edge는 이미 지원하며 Firefox도 뒤따르는 중이다.
Cloudflare는 이를 세 단계로 플랫폼에 넣고 있다.
- Phase 1: origin이 직접 dictionary-compressed response를 만들고 Cloudflare는 Use-As-Dictionary, Available-Dictionary, dcb/dcz encoding을 그대로 전달하는 passthrough
- Phase 2: 고객이 규칙만 지정하면 Cloudflare가 dictionary 저장, delta compression, fallback을 대신 처리
- Phase 3: Cloudflare 네트워크가 versioned resource 패턴을 자동 감지해 dictionary를 생성하고 적용
초기 실험에서는 272KB JS bundle이 gzip으로는 92.1KB였지만, 직전 버전을 dictionary로 쓰는 DCZ에서는 2.6KB까지 줄었다. 같은 테스트에서 cache miss 기준 TTFB는 gzip보다 약 20ms 느렸지만, 다운로드 완료는 31ms vs 166ms로 훨씬 빨랐고, cache hit에서는 16ms vs 143ms로 격차가 더 컸다.
Cloudflare는 Phase 1 open beta를 2026년 4월 30일에 제공할 계획이다. 대상은 dictionary-compressed response를 올바른 headers로 서빙하는 origin이며, 방문자는 Chrome 130+ 또는 **Edge 130+**처럼 dcb/dcz와 Available-Dictionary를 지원하는 브라우저여야 한다. 핵심 목표는 복잡한 dictionary lifecycle을 edge로 끌어와, 자주 바뀌는 대형 asset도 캐시 이점을 유지하게 만드는 것이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.