IPFS Performansı: Gateway ile Dosya Alımını Hızlandırın
IPFS dosya alım hızını artırmak için pratik teknikler: özel gateway'ler, önbellekleme stratejileri, ön yükleme ve CDN entegrasyonu.
Nacho founded IPFS.NINJA to make content-addressed storage feel as simple as an S3 PUT — a single API call, a permanent CID, no wallets or peer discovery to reason about.

- IPFS gecikmesini saniyelerden 200 ms'nin altına indirmek için genel gateway'leri özel bir gateway ile değiştirin.
- Genel gateway'ler soğuk CID'lerde bir DHT araması çalıştırır ve içerik çözülmeden önce 2-15 saniye ekler.
- Dosyaları okuma anında değil yazma anında pinleyin, böylece gateway ilk istekten önce onları zaten elinde bulundurur.
- Özel bir gateway'i bir CDN ucuyla eşleştirerek küresel IPFS gecikmesini 10-50 ms'ye indirin.
“IPFS yavaş” geliştiricilerin en sık dile getirdiği şikayetlerden biri — ve aynı zamanda en kolay çözülebilen sorunlardan biri. Suçlu neredeyse her zaman erişim yöntemidir, protokolün kendisi değil. Bu kılavuz, production ortamında IPFS gecikmesini ortadan kaldıran dört tekniği kapsamaktadır.

Hıza Göre IPFS Erişim Yönteminizi Seçin#
| Erişim yöntemi | Tipik TTFB | Ne zaman kullanılır |
|---|---|---|
Public gateway (ipfs.io, dweb.link) | 2–15 sn | Yalnızca geliştirme ve test için |
| Özel gateway (pin’lenmiş içerik) | 50–200 ms | Tüm production trafiği |
| Özel gateway + CDN edge | 10–50 ms | Global kullanıcı tabanı |
| Görüntü optimizasyon endpoint’i | <100 ms (ılık) | Tüm görüntü içeriği |
Production’da public gateway kullanıyorsanız, özel bir gateway’e geçin ve gecikmenin büyük kısmı anında ortadan kalkar.
Public Gateway’ler Neden Yavaş?#
Public gateway’ler, yakın zamanda görmedikleri her CID için bir DHT (Distributed Hash Table) araması yapar. DHT araması, içeriği kimin tuttuğunu bulmak için ağ genelinde düzinelerce peer’e sorgulama yapmak anlamına gelir — bu gidiş-dönüş, soğuk bir istekte 2–15 saniye sürer.
Cache isabetinde bile, public gateway’ler milyonlarca kullanıcıya hizmet eder. Yakın zamanda pin’lediğiniz dosyanın cache önceliği düşüktür ve istekler arasında silinebilir.
Çözüm 1: Özel Gateway#
Özel gateway, hesabınıza özeldir. Pin’lediğiniz dosyalar o gateway’de hemen önbelleğe alınır — soğuk veya ılık, hiçbir istekte DHT araması yapılmaz.
# Önce: public gateway, yavaş ve güvenilmez
curl https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
# Sonra: özel gateway, hızlı ve deterministik
curl https://my-app.gw.ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdiIPFS.NINJA dashboard’unuzda bir gateway oluşturun ve slug’ı projenizle eşleşecek şekilde ayarlayın. Gateway slug’ları kısıtlı erişim modunu (token gerekli) veya public statik varlıklar için açık modu destekler.
Çözüm 2: Yazma Zamanında Pin’leyin, Okuma Zamanında Değil#
Dosyaları oluşturulduğu anda pin’leyin ki gateway’in herhangi bir kullanıcı istemeden önce bunlara sahip olsun. En hızlı istek, hiçbir zaman cache miss’e neden olmayan istektir.
# Tek adımda yükleme ve pin'leme
curl -X POST https://api.ipfs.ninja/upload/new \
-H "X-Api-Key: bws_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" \
-H "Content-Type: application/json" \
-d '{
"content": {
"data": "BASE64_ENCODED_CONTENT",
"type": "image/png"
},
"description": "Product hero image v2"
}'
# Yanıt — CID'yi saklayın, url'yi hemen sunun
# {
# "cid": "bafy...",
# "sizeMB": 0.24,
# "uris": {
# "ipfs": "ipfs://bafy...",
# "url": "https://ipfs.ninja/ipfs/bafy..."
# }
# }Başka bir node veya pin’leme hizmetinden mevcut CID’leriniz varsa, yeniden yüklemeden yeniden pin’leyin:
curl -X POST https://api.ipfs.ninja/pin \
-H "X-Api-Key: bws_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" \
-H "Content-Type: application/json" \
-d '{"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}'Tam yükleme API referansı için IPFS’e dosya nasıl yüklenir bölümüne bakın.
Çözüm 3: Gateway’inizin Önüne CDN Ekleyin#
Özel gateway’ler sabit bir bölgeden hizmet verir. Kullanıcılarınız kıtalara yayılmışsa, en yakın varlık noktasından hizmet vermek için bir CDN edge katmanı ekleyin.
IPFS içerik adresli olduğundan — belirli bir CID her zaman aynı byte’lara çözümlenir — sonsuza kadar önbelleğe alabilirsiniz:
Cache-Control: public, max-age=31536000, immutableCloudflare örneği (ücretsiz katman çoğu statik varlık iş yükünü karşılar):
- Gateway alt alan adınızı (
my-app.gw.ipfs.ninja) Cloudflare proxied CNAME olarak ekleyin. - Bir Page Rule oluşturun:
my-app.gw.ipfs.ninja/ipfs/*→ Cache Everything, Edge Cache TTL: bir ay. - İlk istek gateway’e çarpar ve en yakın edge PoP’ta önbelleğe alınır. Sonraki tüm istekler Cloudflare’den sunulur.
Sonuç: global TTFB 50–200 ms’den 10–50 ms’ye düşer.
Çözüm 4: Görüntü Optimizasyon API’si#
Tam çözünürlükte sunulan ham IPFS görüntüleri sayfaları yavaşlatır ve Core Web Vitals’a zarar verir. Edge’de yeniden boyutlandırmak ve modern formatlar sunmak için görüntü optimizasyon endpoint’ini kullanın:
# Orijinal (gateway üzerinden tam çözünürlük)
https://my-app.gw.ipfs.ninja/ipfs/bafy...
# 800 px genişliğe yeniden boyutlandırıldı, WebP'ye dönüştürüldü
https://api.ipfs.ninja/image/bafy...?w=800&format=webp
# Kare küçük resim
https://api.ipfs.ninja/image/bafy...?w=200&h=200&fit=coverReact’ta:
function IPFSImage({ cid, width }) {
return (
<img
src={`https://api.ipfs.ninja/image/${cid}?w=${width}&format=webp`}
width={width}
loading="lazy"
decoding="async"
/>
);
}Optimizasyon endpoint’i her (cid, width, format) kombinasyonunu önbelleğe alır — aynı parametrelerle yapılan sonraki istekler origin’i tamamen atlar.
Kontrol Listesi#
- Public gateway’lerden özel gateway’e geçin
- İçeriği okuma zamanında değil, yazma zamanında (yüklemede) pin’leyin
- Gateway yanıtlarında
Cache-Control: immutableayarlayın - Global trafik için gateway’in önüne CDN ekleyin
- Görüntüleri ham gateway URL’leri yerine optimizasyon endpoint’i üzerinden sunun
Pin’lemenin yalnızca hız için değil, kullanılabilirlik için de neden önemli olduğuna dair arka plan bilgisi için IPFS pin’leme nedir bölümüne bakın.
Pin’lemeye başlamaya hazır mısınız? Ücretsiz hesap oluşturun — 50 dosya, 1 GB depolama, 2 GB bant genişliği/ay. Kredi kartı gerekmez.
Bu makale hakkında: Bu makale, IPFS.NINJA’nın içerik oluşturma iş akışı kullanılarak bir AI asistanı tarafından taslak olarak hazırlandı, ardından Nacho Coll tarafından incelendi ve onaylandı. Tüm kod örnekleri canlı IPFS.NINJA API’sine karşı doğrulandı. Bir yanlışlık fark ederseniz lütfen https://github.com/ipfs-ninja/feedback adresinde bir sorun bildirin. İçeriğimizde AI’yi nasıl kullandığımız hakkında daha fazla bilgi edinin ve IPFS.NINJA’nın arkasındaki insanlarla tanışın.
Bu makale hakkında
Bu makale yapay zeka destekli olarak hazırlanmış, insan tarafından incelenmiş ve yayınlanmadan önce canlı IPFS.NINJA platformunda doğrulanmıştır. İçeriklerimizde yapay zekayı nasıl kullandığımızı öğrenin .

Yazar hakkında
Nacho Coll
Founder & Engineer at IPFS.NINJA
Nacho founded IPFS.NINJA to make content-addressed storage feel as simple as an S3 PUT — a single API call, a permanent CID, no wallets or peer discovery to reason about. Writes about IPFS internals, decentralized storage patterns, and the pinning-service landscape from the operator side of the wire.
