이 페이지는 자동 번역되었습니다. 영어 원문이 정본입니다. 영어로 읽기 →
메인 콘텐츠로 건너뛰기

압축 및 캐싱

GET /markets와 같은 대용량 공개 조회는 수 메가바이트 분량의 JSON입니다. 압축을 요청하고, 각 응답의 Cache-Control 헤더를 통해 데이터가 얼마나 최신인지 확인하십시오.

압축​

Accept-Encoding: gzip을 전송하면 API는 본문을 gzip으로 압축하여 Content-Encoding: gzip과 함께 반환합니다. GET /markets의 경우 약 4 MB에서 약 0.6 MB로 줄어듭니다.

  • 브라우저와 Node.js fetch는 헤더를 전송하고 자동으로 압축을 해제합니다.
  • **Rust hypercall-client**는 HTTP 클라이언트에서 gzip을 활성화하므로, 모든 REST 호출이 압축을 요청하고 투명하게 디코딩합니다.
  • Python requests와 httpx는 기본적으로 헤더를 전송하고 압축을 해제합니다. 일반 urllib는 둘 다 하지 않으므로 압축되지 않은 본문을 받게 됩니다.
  • curl은 --compressed 옵션이 필요합니다.

약 1 KB 미만의 응답은 압축되지 않은 상태로 전송됩니다. WebSocket 프레임은 영향을 받지 않습니다. WebSocket 압축을 참고하십시오.

Cache-Control​

모든 조회 응답은 공유 캐시가 해당 응답을 저장할 수 있는지 여부를 알려줍니다.

응답 헤더표시되는 위치의미
public, max-age=N공개 시장 데이터: /markets, /instruments, /instrument-specs, /exchange-info, 그릭스, 옵션 및 만기 요약, 과거 이론가, 풀 조회, /version모든 캐시가 최대 N초 동안 본문을 재사용할 수 있습니다. 대부분 1~15초이며, 과거 데이터는 더 길 수 있습니다.
public, max-age=N, stale-while-revalidate=M위 조회 중 일부N초가 지난 후에도 캐시는 백그라운드에서 새 본문을 가져오는 동안 최대 M초 더 이전 본문을 계속 제공할 수 있습니다.
no-store지갑 범위 및 인증된 조회: 포트폴리오, 미체결 주문, 체결 내역, 지갑별로 필터링된 거래, MMP 설정 등어떤 캐시에도 저장되지 않습니다. 모든 요청이 API에 도달합니다.
없음/orderbook 및 모든 쓰기 요청을 포함한 그 외 모든 항목캐시되지 않습니다.

public 조회 응답은 최대 max-age(여기에 stale-while-revalidate가 있으면 그만큼 추가)초만큼 지난 데이터일 수 있다고 간주하십시오. 거래 결정을 위해 최신 상태가 필요한 경우, 캐시되지 않는 WebSocket 채널이나 지갑 범위 조회를 통해 읽으십시오.

오류 응답(4xx, 5xx)에는 절대 public이 붙지 않으며 캐시되지 않습니다. API가 오류를 반환하는 동안 캐시가 만료된 본문을 계속 제공하지 않으며, 오류가 그대로 전달됩니다.

항상 API에 도달하는 요청​

다음 중 하나라도 포함된 요청에는 캐시된 본문이 절대 반환되지 않으며, 해당 요청이 받은 응답도 저장되지 않습니다.

  • Authorization 또는 Cookie
  • X-Hypercall-Signature 또는 X-Hypercall-Expires-At-Ms (MMP 설정과 같은 서명된 조회)
  • X-Hypercall-Fence 또는 X-Hypercall-Fence-Wait (쓰기 후 읽기 일관성, 마켓메이커 보호 참고)
  • X-Hypercall-Gateway-Token 또는 X-Admin-Key
  • GET 또는 HEAD 이외의 모든 메서드 및 WebSocket 업그레이드

쓰기 후 읽기 펜스와 캐싱은 절대 함께 사용되지 않습니다. X-Hypercall-Fence를 처리하는 경로는 no-store이며, public 경로는 펜스를 기다리지 않습니다.

X-Cache-Status​

Hypercall 엣지 캐시를 거치는 응답에는 X-Cache-Status가 포함됩니다.

값의미
HITmax-age 이내에 엣지 캐시에서 제공되었습니다.
MISSAPI에서 가져왔습니다. 응답이 public이었다면 이제 캐시에 저장됩니다.
BYPASS요청에 위 목록의 헤더가 포함되어 있어 API로 직접 전달되었으며 아무것도 저장되지 않았습니다.
EXPIRED캐시된 사본의 유효 기간이 지나 API에 다시 요청했습니다.
STALE 또는 UPDATING새 사본을 가져오는 동안 stale-while-revalidate 구간 내에서 캐시로부터 제공되었습니다.

쓰기 요청 및 기타 GET이 아닌 요청에는 X-Cache-Status가 없습니다. 이 헤더는 참고용이므로 거래 로직을 이 헤더에 따라 분기하지 마십시오. 아직 모든 환경에 엣지 캐시가 적용된 것은 아닙니다. 헤더가 없는 응답은 API에서 직접 온 것입니다.