IPFS-suorituskyky: Nopeuta tiedostojen hakua gatewaylla

Käytännön tekniikat IPFS-tiedostojen hakunopeuden parantamiseen: dedikoidut gatewayt, välimuistiratkaisut, esilataus ja CDN-integraatio.

Nacho Collkirjoittaja Päivitetty: 5 min lukuaika
Käytännön tekniikat IPFS-tiedostojen hakunopeuden parantamiseen: dedikoidut gatewayt, välimuistiratkaisut, esilataus ja CDN-integraatio.
TL;DR
  • Vaihda julkiset gatewayt dedikoituun gatewayhin ja lyhennä IPFS-viivettä sekunneista alle 200 ms:iin.
  • Julkiset gatewayt tekevät DHT-haun kylmille CID:eille, mikä lisää 2–15 sekuntia ennen kuin sisältö selviää.
  • Pinnaa tiedostot kirjoitushetkellä, ei lukuhetkellä, jotta gatewaylla on ne valmiina jo ennen ensimmäistä pyyntöä.
  • Yhdistä dedikoitu gateway CDN-reunaan ja tuo globaali IPFS-viive alas 10–50 ms:iin.

“IPFS on hidas” on yksi kehittäjien yleisimmistä valituksista — ja myös yksi helpoimmin korjattavista. Syy on lähes aina käytettävä pääsytapa, ei itse protokolla. Tässä oppaassa käsitellään neljä tekniikkaa, jotka poistavat IPFS-latenssin tuotantoympäristöissä.

IPFS Ninja

Valitse IPFS-pääsymenetelmäsi nopeuden mukaan#

PääsymenetelmäTyypillinen TTFBMilloin käyttää
Julkinen gateway (ipfs.io, dweb.link)2–15 sVain kehitykseen ja testaukseen
Dedikoitu gateway (kiinnitetty sisältö)50–200 msKaikki tuotantoliikenne
Dedikoitu gateway + CDN-reuna10–50 msGlobaali käyttäjäkunta
Kuvien optimointipiste<100 ms (lämmin)Kaikki kuvasisältö

Jos käytät julkisia gatewayjä tuotannossa, siirry dedikoiduun gatewayhin ja suurin osa latenssistasi häviää välittömästi.

Miksi julkiset gatewayt ovat hitaita#

Julkiset gatewayt suorittavat DHT (Distributed Hash Table) -haun jokaiselle CID:lle, jota ne eivät ole äskettäin nähneet. DHT-haku tarkoittaa kymmeniä vertaisia verkon yli kyselemistä sen selvittämiseksi, kenellä sisältö on — tämä edestakaisin kulku vie 2–15 sekuntia kylmässä pyynnössä.

Jopa välimuistiosumassa julkiset gatewayt palvelevat miljoonia käyttäjiä. Äskettäin kiinnitetyllä tiedostollasi on matala välimuistiprioriteetti ja se saatetaan poistaa pyyntöjen välillä.

Ratkaisu 1: Dedikoitu gateway#

Dedikoitu gateway on yksityinen tilillesi. Kiinnittämäsi tiedostot tallennetaan välittömästi välimuistiin kyseisessä gatewayssa — ei DHT-hakua missään pyynnössä, kylmässä tai lämpimässä.

# Ennen: julkinen gateway, hidas ja epäluotettava
curl https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

# Jälkeen: dedikoitu gateway, nopea ja deterministinen
curl https://my-app.gw.ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

Luo gateway IPFS.NINJA-hallintapaneelissa ja aseta tunniste vastaamaan projektiasi. Gateway-tunnisteet tukevat rajoitettua pääsytilaa (tunniste vaaditaan) tai avointa tilaa julkisille staattisille resursseille.

Ratkaisu 2: Kiinnitä kirjoitushetkellä, ei lukuhetkellä#

Kiinnitä tiedostot heti, kun ne luodaan, jotta gatewaylla on ne ennen kuin yksikään käyttäjä pyytää niitä. Nopein pyyntö on sellainen, joka ei aiheuta välimuistipuutetta.

# Lataa ja kiinnitä yhdessä vaiheessa
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"
  }'

# Vastaus — tallenna CID, tarjoa url välittömästi
# {
#   "cid": "bafy...",
#   "sizeMB": 0.24,
#   "uris": {
#     "ipfs": "ipfs://bafy...",
#     "url": "https://ipfs.ninja/ipfs/bafy..."
#   }
# }

Jos sinulla on olemassa olevia CID:tä toiselta solmulta tai kiinnittämispalvelusta, kiinnitä uudelleen ilman uudelleenlatausta:

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

Katso kuinka ladata tiedostoja IPFS:ään saadaksesi koko lataus-API-viitteen.

Ratkaisu 3: CDN gatewayn eteen#

Dedikoidut gatewayt palvelevat kiinteältä alueelta. Jos käyttäjäsi sijaitsevat eri mantereilla, lisää CDN-reunakerros palvelemaan lähimmältä läsnäolopisteeltä.

Koska IPFS on sisältöosoitteinen — tietty CID ratkaisee aina identtiset tavut — voit tallentaa välimuistiin ikuisesti:

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

Cloudflare-esimerkki (ilmainen taso kattaa useimmat staattiset resurssit):

  1. Lisää gatewayn aliverkkotunnus (my-app.gw.ipfs.ninja) Cloudflare-välitetyksi CNAME:ksi.
  2. Luo sivusääntö: my-app.gw.ipfs.ninja/ipfs/*Välimuistita kaikki, Reunan välimuistin TTL: kuukausi.
  3. Ensimmäinen pyyntö osuu gatewayhin ja tallennetaan välimuistiin lähimmässä reunan PoP:ssa. Kaikki myöhemmät pyynnöt palvelevat Cloudflarelta.

Tulos: globaali TTFB laskee 50–200 ms:sta 10–50 ms:iin.

Ratkaisu 4: Kuvien optimointi-API#

Raa’at IPFS-kuvat täydessä resoluutiossa hidastavat sivuja ja heikentävät Core Web Vitals -arvoja. Käytä kuvien optimointipistettä koon muuttamiseen reunassa ja modernien formaattien tarjoamiseen:

# Alkuperäinen (täysi resoluutio gatewayn kautta)
https://my-app.gw.ipfs.ninja/ipfs/bafy...

# Skaalattu 800 px leveäksi, muunnettu WebP-formaattiin
https://api.ipfs.ninja/image/bafy...?w=800&format=webp

# Neliömäinen pikkukuva
https://api.ipfs.ninja/image/bafy...?w=200&h=200&fit=cover

Reactissa:

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

Optimointipiste tallentaa jokaisen (cid, width, format)-yhdistelmän välimuistiin — myöhemmät pyynnöt samoilla parametreilla ohittavat alkuperän kokonaan.

Tarkistuslista#

  • Vaihda julkisista gatewayistä dedikoiduun gatewayhin
  • Kiinnitä sisältö kirjoitushetkellä (latauksen yhteydessä), ei lukuhetkellä
  • Aseta Cache-Control: immutable gateway-vastauksille
  • Lisää CDN gatewayn eteen globaalille liikenteelle
  • Tarjoa kuvat optimointipisteen kautta raakojen gateway-URL:ien sijaan

Lisätietoja siitä, miksi kiinnittäminen on tärkeää saatavuudelle — ei vain nopeudelle — löydät artikkelista mitä on IPFS-kiinnittäminen.


Valmis aloittamaan kiinnittämisen? Luo ilmainen tili — 50 tiedostoa, 1 Gt tallennustilaa, 2 Gt kaistanleveyttä/kk. Luottokorttia ei tarvita.

Tietoja tästä artikkelista: Tämä artikkeli laadittiin tekoälyavustajan avulla käyttäen IPFS.NINJA:n sisällöntuotantotyönkulkua, minkä jälkeen Nacho Coll tarkisti ja hyväksyi sen. Kaikki koodiesimerkit on vahvistettu toimivaa IPFS.NINJA API:a vastaan. Jos huomaat epätarkkuuden, avaa ongelma osoitteessa https://github.com/ipfs-ninja/feedback. Lue lisää siitä, miten käytämme tekoälyä sisällössämme ja tutustu IPFS.NINJA:n takana oleviin ihmisiin.

Nacho Coll

Tietoa kirjoittajasta

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.

Takaisin Blogiin

Aiheeseen liittyvät artikkelit