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
fetchbaşlığı gönderir ve yanıtı otomatik olarak açar. - Rust
hypercall-clientHTTP 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
requestsvehttpxvarsayılan olarak başlığı gönderir ve yanıtı açar. Düzurllibikisini de yapmaz, bu nedenle sıkıştırılmamış gövdeyi alırsınız. - curl için
--compressedgerekir.
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üz | Anlamı |
|---|---|---|
public, max-age=N | Herkese açık piyasa verileri: /markets, /instruments, /instrument-specs, /exchange-info, greeks, opsiyon ve vade özetleri, geçmiş teorik fiyatlar, havuz okumaları, /version | Herhangi 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=M | Yukarıdaki okumaların bazıları | N saniye sonra bir önbellek, arka planda yenisini çekerken eski gövdeyi M saniye daha sunmaya devam edebilir. |
no-store | Cü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 benzerleri | Hiçbir önbellek tarafından saklanmaz. Her istek API'ye ulaşır. |
| yok | Diğ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:
AuthorizationveyaCookieX-Hypercall-SignatureveyaX-Hypercall-Expires-At-Ms(MMP yapılandırması gibi imzalı okumalar)X-Hypercall-FenceveyaX-Hypercall-Fence-Wait(yazma sonrası okuma tutarlılığı, bkz. Piyasa Yapıcı Koruması)X-Hypercall-Gateway-TokenveyaX-Admin-KeyGETveyaHEADdışı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ğer | Anlamı |
|---|---|
HIT | max-age süresi içinde uç önbellekten sunuldu. |
MISS | API'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 UPDATING | Yeni 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.