IPFS-suorituskyky: Nopeuta tiedostojen hakua gatewaylla
Käytännön tekniikat IPFS-tiedostojen hakunopeuden parantamiseen: dedikoidut gatewayt, välimuistiratkaisut, esilataus ja CDN-integraatio.
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.

- 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ä.

Valitse IPFS-pääsymenetelmäsi nopeuden mukaan#
| Pääsymenetelmä | Tyypillinen TTFB | Milloin käyttää |
|---|---|---|
Julkinen gateway (ipfs.io, dweb.link) | 2–15 s | Vain kehitykseen ja testaukseen |
| Dedikoitu gateway (kiinnitetty sisältö) | 50–200 ms | Kaikki tuotantoliikenne |
| Dedikoitu gateway + CDN-reuna | 10–50 ms | Globaali 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/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdiLuo 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, immutableCloudflare-esimerkki (ilmainen taso kattaa useimmat staattiset resurssit):
- Lisää gatewayn aliverkkotunnus (
my-app.gw.ipfs.ninja) Cloudflare-välitetyksi CNAME:ksi. - Luo sivusääntö:
my-app.gw.ipfs.ninja/ipfs/*→ Välimuistita kaikki, Reunan välimuistin TTL: kuukausi. - 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=coverReactissa:
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: immutablegateway-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.
Tietoa tästä artikkelista
Tämä artikkeli on tekoälyavusteinen, ihmisen tarkistama ja tuoteverifioitu IPFS.NINJA-alustaa vasten ennen julkaisua. Lue, miten käytämme tekoälyä sisällössämme .

Tietoa kirjoittajasta
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.
