このページは機械翻訳されています。英語の原文が正式版です。 英語で読む →
メインコンテンツにスキップ

圧縮とキャッシュ

GET /markets のような大きな公開読み取りは、数メガバイトの JSON になります。圧縮を要求し、各レスポンスの Cache-Control ヘッダーでデータの鮮度を確認してください。

圧縮​

Accept-Encoding: gzip を送信すると、API は Content-Encoding: gzip を付けて gzip 圧縮したボディを返します。GET /markets は約 4 MB から約 0.6 MB に縮小されます。

  • ブラウザ と Node.js の fetch は、ヘッダーを送信し、自動的に展開します。
  • Rust の hypercall-client は HTTP クライアントで gzip を有効にしているため、すべての REST 呼び出しで gzip を要求し、透過的にデコードします。
  • 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 から直接返されたものです。