IPFS performanse: ubrzajte dohvaćanje s dedikiranim gatewayem

Praktične tehnike za poboljšanje brzine dohvaćanja IPFS datoteka: namjenski gatewayi, strategije predmemoriranja, predučitavanje i CDN integracija.

Nacho Collautor Ažurirano: 6 min čitanja
Praktične tehnike za poboljšanje brzine dohvaćanja IPFS datoteka: namjenski gatewayi, strategije predmemoriranja, predučitavanje i CDN integracija.
TL;DR
  • Zamijenite javne gatewaye dediciranim gatewayem kako biste smanjili IPFS kašnjenje sa sekundi na manje od 200 ms.
  • Javni gatewayi izvode DHT pretragu za hladne CID-ove, što dodaje 2–15 sekundi prije razrješenja sadržaja.
  • Pinajte datoteke u trenutku pisanja, a ne čitanja, tako da ih gateway već posjeduje prije prvog zahtjeva.
  • Kombinirajte dedicirani gateway s CDN edgeom kako biste globalno IPFS kašnjenje smanjili na 10–50 ms.

„IPFS je spor” jedna je od najčešćih pritužbi programera — i ujedno jedna od najlakše rješivih. Krivac je gotovo uvijek metoda pristupa, a ne sam protokol. Ovaj vodič pokriva četiri tehnike koje eliminiraju latenciju IPFS-a u produkciji.

IPFS Ninja

Odaberite metodu pristupa IPFS-u prema brzini#

Metoda pristupaTipičan TTFBKada koristiti
Javni gateway (ipfs.io, dweb.link)2–15 sSamo razvoj i testiranje
Namjenski gateway (prikvačeni sadržaj)50–200 msSav produkcijski promet
Namjenski gateway + CDN edge10–50 msGlobalna baza korisnika
Endpoint za optimizaciju slika<100 ms (toplo)Sav slikovni sadržaj

Ako koristite javne gatewayi u produkciji, prijeđite na namjenski gateway i većina vaše latencije odmah nestaje.

Zašto su javni gatewayi spori#

Javni gatewayi izvode DHT (Distributed Hash Table) pretraživanje za svaki CID koji nisu nedavno vidjeli. DHT pretraživanje znači upitivanje desetaka ravnopravnih čvorova kroz mrežu kako bi se pronašao nositelj sadržaja — taj kružni put traje 2–15 sekundi na hladnom zahtjevu.

Čak i pri pogotku predmemorije, javni gatewayi opslužuju milijune korisnika. Vaša nedavno prikvačena datoteka ima niski prioritet predmemorije i može biti izbačena između zahtjeva.

Rješenje 1: Namjenski gateway#

Namjenski gateway je privatan za vaš račun. Datoteke koje prikvačite odmah se predmemoriraju na tom gatewayu — bez DHT pretraživanja na bilo kojem zahtjevu, hladnom ili toplom.

# Prije: javni gateway, spor i nepouzdan
curl https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

# Nakon: namjenski gateway, brz i deterministički
curl https://my-app.gw.ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

Kreirajte gateway u svojoj IPFS.NINJA nadzornoj ploči i postavite slug da odgovara vašem projektu. Gateway slugovi podržavaju način ograničenog pristupa (potreban token) ili otvoreni način za javne statičke resurse.

Rješenje 2: Prikvači pri pisanju, ne pri čitanju#

Prikvačite datoteke u trenutku njihovog stvaranja kako bi ih gateway imao prije bilo kojeg korisničkog zahtjeva. Najbrži zahtjev je onaj koji nikada ne uzrokuje promašaj predmemorije.

# Prenesi i prikvači u jednom koraku
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"
  }'

# Odgovor — pohranite CID, odmah posluživajte url
# {
#   "cid": "bafy...",
#   "sizeMB": 0.24,
#   "uris": {
#     "ipfs": "ipfs://bafy...",
#     "url": "https://ipfs.ninja/ipfs/bafy..."
#   }
# }

Ako imate postojeće CID-ove s drugog čvora ili usluge prikvačivanja, prikvačite ponovo bez ponovnog prijenosa:

curl -X POST https://api.ipfs.ninja/pin \
  -H "X-Api-Key: bws_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" \
  -H "Content-Type: application/json" \
  -d '{"cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"}'

Pogledajte kako prenijeti datoteke na IPFS za cjelovitu referencu API-ja za prijenos.

Rješenje 3: CDN ispred vašeg gatewaya#

Namjenski gatewayi poslužuju iz fiksne regije. Ako vaši korisnici pokrivaju kontinente, dodajte CDN edge sloj za posluživanje iz najbliže točke prisutnosti.

Budući da IPFS koristi adresiranje sadržaja — dani CID uvijek razrješava identične bajtove — možete predmemorirati zauvijek:

Cache-Control: public, max-age=31536000, immutable

Primjer s Cloudflareom (besplatni tier pokriva većinu opterećenja statičkim resursima):

  1. Dodajte poddomenu vašeg gatewaya (my-app.gw.ipfs.ninja) kao Cloudflare proxirani CNAME.
  2. Kreirajte Page Rule: my-app.gw.ipfs.ninja/ipfs/*Cache Everything, Edge Cache TTL: a month.
  3. Prvi zahtjev pogađa gateway i predmemorira se na najbližem edge PoP-u. Svi sljedeći zahtjevi posluživani su iz Cloudflareja.

Rezultat: globalni TTFB pada s 50–200 ms na 10–50 ms.

Rješenje 4: API za optimizaciju slika#

Sirove IPFS slike posluživane u punoj rezoluciji usporavaju stranice i narušavaju Core Web Vitals. Koristite endpoint za optimizaciju slika za promjenu veličine na edgeu i posluživanje modernih formata:

# Original (puna rezolucija putem gatewaya)
https://my-app.gw.ipfs.ninja/ipfs/bafy...

# Promijenjena veličina na 800 px širine, konvertirana u WebP
https://api.ipfs.ninja/image/bafy...?w=800&format=webp

# Kvadratna sličica
https://api.ipfs.ninja/image/bafy...?w=200&h=200&fit=cover

U Reactu:

function IPFSImage({ cid, width }) {
  return (
    <img
      src={`https://api.ipfs.ninja/image/${cid}?w=${width}&format=webp`}
      width={width}
      loading="lazy"
      decoding="async"
    />
  );
}

Endpoint za optimizaciju predmemorira svaku kombinaciju (cid, width, format) — sljedeći zahtjevi s istim parametrima u potpunosti zaobilaze izvor.

Kontrolni popis#

  • Prijeđite s javnih gatewaya na namjenski gateway
  • Prikvačite sadržaj pri pisanju (pri prijenosu), ne pri čitanju
  • Postavite Cache-Control: immutable na odgovore gatewaya
  • Dodajte CDN ispred gatewaya za globalni promet
  • Posluživajte slike putem endpointa za optimizaciju umjesto sirovih URL-ova gatewaya

Za pozadinske informacije o tome zašto je prikvačivanje važno za dostupnost — ne samo za brzinu — pogledajte što je IPFS prikvačivanje.


Spremni za početak prikvačivanja? Kreirajte besplatni račun — 50 datoteka, 1 GB pohrane, 2 GB propusnosti/mj. Nije potrebna kreditna kartica.

O ovom članku: ovaj članak izradio je AI asistent koristeći IPFS.NINJA-in tijek rada za generiranje sadržaja, a zatim ga je pregledao i odobrio Nacho Coll. Svi primjeri koda verificirani su prema živom IPFS.NINJA API-ju. Ako primijetite netočnost, otvorite issue na https://github.com/ipfs-ninja/feedback. Pročitajte više o tome kako koristimo AI u našem sadržaju i upoznajte ljude iza IPFS.NINJA.

Nacho Coll

O autoru

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.

Natrag na Blog

Povezani članci