Bu sayfa otomatik olarak çevrilmiştir. İngilizce orijinal kanonik versiyondur. İngilizce oku →
Ana içeriğe geç

Sıkıştırma ve Önbellekleme

GET /markets gibi büyük herkese açık okumalar megabaytlarca JSON içerir. Sıkıştırma isteyin ve her yanıttaki Cache-Control başlığının verinin ne kadar güncel olduğunu size söylemesine izin verin.

Sıkıştırma​

Accept-Encoding: gzip gönderdiğinizde API, gövdeyi Content-Encoding: gzip ile gzip olarak sıkıştırılmış şekilde döndürür. GET /markets yaklaşık 4 MB'tan yaklaşık 0,6 MB'a düşer.

  • Tarayıcılar ve Node.js fetch başlığı gönderir ve yanıtı otomatik olarak açar.
  • Rust hypercall-client HTTP istemcisinde gzip'i etkinleştirir; böylece her REST çağrısı sıkıştırma ister ve yanıtı şeffaf biçimde çözer.
  • Python requests ve httpx varsayılan olarak başlığı gönderir ve yanıtı açar. Düz urllib ikisini de yapmaz, bu nedenle sıkıştırılmamış gövdeyi alırsınız.
  • curl için --compressed gerekir.

Yaklaşık 1 KB'ın altındaki yanıtlar sıkıştırılmadan gönderilir. WebSocket çerçeveleri bundan etkilenmez; bkz. WebSocket sıkıştırması.

Cache-Control​

Her okuma, paylaşılan bir önbelleğin onu saklayıp saklayamayacağını size bildirir.

Yanıt başlığıNerede görürsünüzAnlamı
public, max-age=NHerkese açık piyasa verileri: /markets, /instruments, /instrument-specs, /exchange-info, greeks, opsiyon ve vade özetleri, geçmiş teorik fiyatlar, havuz okumaları, /versionHerhangi bir önbellek gövdeyi en fazla N saniye boyunca yeniden kullanabilir. Çoğu 1 ile 15 saniye arasındadır; geçmiş veriler daha uzun olabilir.
public, max-age=N, stale-while-revalidate=MYukarıdaki okumaların bazılarıN saniye sonra bir önbellek, arka planda yenisini çekerken eski gövdeyi M saniye daha sunmaya devam edebilir.
no-storeCüzdana özgü ve kimliği doğrulanmış okumalar: portföy, açık emirler, gerçekleşmeler, cüzdana göre filtrelenmiş işlemler, MMP yapılandırması ve benzerleriHiçbir önbellek tarafından saklanmaz. Her istek API'ye ulaşır.
yokDiğer her şey, /orderbook ve tüm yazma işlemleri dahilÖnbelleğe alınmaz.

Bir public okumayı en fazla max-age (artı varsa stale-while-revalidate) saniye eski kabul edin. Bir işlem kararı için en güncel duruma ihtiyacınız olduğunda, bunu hiçbir zaman önbelleğe alınmayan WebSocket kanallarından veya cüzdana özgü bir okumadan alın.

Hata yanıtları (4xx, 5xx) hiçbir zaman public taşımaz ve hiçbir zaman önbelleğe alınmaz. API hata döndürürken önbellek süresi dolmuş bir gövdeyi sunmaya devam etmez; hatayı alırsınız.

Her zaman API'ye ulaşan istekler​

Aşağıdakilerden herhangi birini taşıyan bir isteğe hiçbir zaman önbellekteki gövde döndürülmez ve böyle bir isteğin aldığı hiçbir şey saklanmaz:

  • Authorization veya Cookie
  • X-Hypercall-Signature veya X-Hypercall-Expires-At-Ms (MMP yapılandırması gibi imzalı okumalar)
  • X-Hypercall-Fence veya X-Hypercall-Fence-Wait (yazma sonrası okuma tutarlılığı, bkz. Piyasa Yapıcı Koruması)
  • X-Hypercall-Gateway-Token veya X-Admin-Key
  • GET veya HEAD dışındaki herhangi bir yöntem ve WebSocket yükseltmeleri

Yazma sonrası okuma bariyerleri ile önbellekleme asla bir arada kullanılmaz. X-Hypercall-Fence başlığını dikkate alan bir rota no-store olur ve bir public rota hiçbir zaman bir bariyeri beklemez.

X-Cache-Status​

Hypercall uç önbelleğinden geçen yanıtlar X-Cache-Status taşır:

DeğerAnlamı
HITmax-age süresi içinde uç önbellekten sunuldu.
MISSAPI'den çekildi. Yanıt public ise artık önbellektedir.
BYPASSİstek yukarıdaki listeden bir başlık taşıdığı için doğrudan API'ye gitti ve hiçbir şey saklanmadı.
EXPIREDÖnbellekteki kopyanın ömrü dolmuştu, bu nedenle API'ye yeniden soruldu.
STALE veya UPDATINGYeni bir kopya çekilirken stale-while-revalidate penceresi içinde önbellekten sunuldu.

Yazma işlemleri ve GET dışındaki diğer isteklerde X-Cache-Status bulunmaz. Başlık yalnızca bilgilendirme amaçlıdır: işlem mantığınızı buna göre dallandırmayın. Her ortamda henüz uç önbellek bulunmuyor. Bu başlığı taşımayan bir yanıt doğrudan API'den gelmiştir.