Zmogljivost IPFS: Pospešite pridobivanje z namenskim prehodom

Praktične tehnike za izboljšanje hitrosti pridobivanja datotek IPFS: namenski prehodi, strategije predpomnilnika, predhodno nalaganje in integracija CDN.

Nacho Collavtor Posodobljeno: 6 min branja
Praktične tehnike za izboljšanje hitrosti pridobivanja datotek IPFS: namenski prehodi, strategije predpomnilnika, predhodno nalaganje in integracija CDN.
TL;DR
  • Zamenjajte javne prehode za namenski prehod in zmanjšajte zakasnitev IPFS s sekund na manj kot 200 ms.
  • Javni prehodi izvedejo iskanje DHT za hladne CID-je, kar doda 2–15 sekund, preden se vsebina razreši.
  • Pripnite datoteke ob pisanju, ne ob branju, da jih prehod že hrani, preden pride prva zahteva.
  • Namenski prehod združite z CDN edge vozliščem, da globalno zakasnitev IPFS znižate na 10–50 ms.

„IPFS je počasen” je ena najpogostejših pritožb razvijalcev — in hkrati ena najlažje odpravljenih. Krivec je skoraj vedno metoda dostopa, ne protokol sam. Ta vodič pokriva štiri tehnike, ki odpravijo zakasnitev IPFS v produkciji.

IPFS Ninja

Hiter pregled: Metode dostopa IPFS po hitrosti#

Metoda dostopaTipičen TTFBKdaj uporabiti
Javni prehod (ipfs.io, dweb.link)2–15 sSamo razvoj in testiranje
Namenski prehod (pripeta vsebina)50–200 msVes produkcijski promet
Namenski prehod + CDN edge10–50 msGlobalna baza uporabnikov
Končna točka za optimizacijo slik<100 ms (toplo)Vsa slikovna vsebina

Če v produkciji uporabljate javne prehode, preklopite na namenski prehod in večina zakasnitve takoj izgine.

Zakaj so javni prehodi počasni#

Javni prehodi izvajajo iskanje DHT (Distributed Hash Table) za vsak CID, ki ga niso nedavno videli. Iskanje DHT pomeni poizvedovanje pri desetinah vozlišč v omrežju, da bi ugotovili, kdo hrani vsebino — ta izmenjava traja 2–15 sekund pri hladni zahtevi.

Tudi ob zadetku v predpomnilniku javni prehodi strežejo milijonom uporabnikov. Vaša nedavno pripeta datoteka ima nizko prioriteto v predpomnilniku in je lahko izrinjena med zahtevami.

Rešitev 1: Namenski prehod#

Namenski prehod je zaseben za vaš račun. Datoteke, ki jih pripnete, so takoj shranjene v predpomnilniku tega prehoda — brez iskanja DHT pri kateri koli zahtevi, hladni ali topli.

# Prej: javni prehod, počasen in nezanesljiv
curl https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

# Potem: namenski prehod, hiter in deterministični
curl https://my-app.gw.ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

Ustvarite prehod v svoji nadzorni plošči IPFS.NINJA in nastavite slug, ki ustreza vašemu projektu. Slugi prehodov podpirajo način omejenega dostopa (potreben je žeton) ali odprt način za javna statična sredstva.

Rešitev 2: Pripnite ob pisanju, ne ob branju#

Pripnite datoteke takoj, ko so ustvarjene, da jih ima prehod pred kakršno koli zahtevo uporabnikov. Najhitrejša zahteva je tista, ki nikoli ne povzroči zamudka predpomnilnika.

# Nalaganje in pripenjanje v enem 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 — shranite CID, takoj strežite url
# {
#   "cid": "bafy...",
#   "sizeMB": 0.24,
#   "uris": {
#     "ipfs": "ipfs://bafy...",
#     "url": "https://ipfs.ninja/ipfs/bafy..."
#   }
# }

Če imate obstoječe CID-je z drugega vozlišča ali storitve pinning, jih znova pripnite brez ponovnega nalaganja:

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

Oglejte si kako nalagati datoteke v IPFS za celotno referenco API za nalaganje.

Rešitev 3: CDN pred prehodom#

Namenski prehodi strežejo iz fiksne regije. Če vaši uporabniki prihajajo z različnih celin, dodajte plast CDN edge za strežbo iz najbližje točke prisotnosti.

Ker je IPFS naslovljen po vsebini — dani CID se vedno razreši na identične bajte — lahko shranjujete v predpomnilnik za vedno:

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

Primer Cloudflare (brezplačni načrt pokriva večino obremenitev s statičnimi sredstvi):

  1. Dodajte poddomen svojega prehoda (my-app.gw.ipfs.ninja) kot CNAME prek Cloudflare s proxyjem.
  2. Ustvarite pravilo strani: my-app.gw.ipfs.ninja/ipfs/*Cache Everything, Edge Cache TTL: en mesec.
  3. Prva zahteva doseže prehod in se shrani v predpomnilnik na najbližjem edge PoP. Vse nadaljnje zahteve so strežene iz Cloudflare.

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

Rešitev 4: API za optimizacijo slik#

Surove IPFS slike v polni ločljivosti upočasnjujejo strani in škodijo Core Web Vitals. Uporabite končno točko za optimizacijo slik za spremembo velikosti na edge in strežbo modernih formatov:

# Izvirnik (polna ločljivost prek prehoda)
https://my-app.gw.ipfs.ninja/ipfs/bafy...

# Spremenjena velikost na 800 px širine, pretvorjena v 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

V React:

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

Končna točka za optimizacijo shrani v predpomnilnik vsako kombinacijo (cid, širina, format) — nadaljnje zahteve z enakimi parametri v celoti preskočijo izvor.

Kontrolni seznam#

  • Preklopite z javnih prehodov na namenski prehod
  • Pripnite vsebino ob pisanju (ob nalaganju), ne ob branju
  • Nastavite Cache-Control: immutable na odgovore prehoda
  • Dodajte CDN pred prehod za globalni promet
  • Strežite slike prek končne točke za optimizacijo namesto surovih URL prehodov

Za ozadje o tem, zakaj je pinning pomemben za razpoložljivost — ne le za hitrost — si oglejte kaj je IPFS pinning.


Pripravljeni začeti s pripenjanjem? Ustvarite brezplačen račun — 50 datotek, 1 GB prostora, 2 GB pasovne širine/mes. Kreditna kartica ni potrebna.

O tem članku: Ta članek je sestavil AI asistent z uporabo delovnega toka za ustvarjanje vsebine IPFS.NINJA, nato ga je pregledal in odobril Nacho Coll. Vsi primeri kode so bili preverjeni glede na živi API IPFS.NINJA. Če opazite netočnost, odprite težavo na https://github.com/ipfs-ninja/feedback. Preberite več o tem, kako pri vsebini uporabljamo AI in spoznajte ljudi za IPFS.NINJA.

Nacho Coll

O avtorju

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.

Nazaj na Blog

Povezani članki