IPFS Ydeevne: Fremskyd Filhentning med Dedikeret Gateway

Praktiske teknikker til at forbedre hastigheden ved IPFS-filhentning: dedikerede gateways, cachestrategier, forudindlæsning og CDN-integration.

Nacho Collaf Opdateret: 6 min læsning
Praktiske teknikker til at forbedre hastigheden ved IPFS-filhentning: dedikerede gateways, cachestrategier, forudindlæsning og CDN-integration.
TL;DR
  • Skift offentlige gateways ud med en dedikeret gateway for at reducere IPFS-latens fra sekunder til under 200 ms.
  • Offentlige gateways udfører et DHT-opslag på kolde CIDs, hvilket tilføjer 2-15 sekunder, før indholdet bliver tilgængeligt.
  • Fastgør (pin) filer ved skrivetidspunktet, ikke ved læsetidspunktet, så gatewayen allerede har dem, før den første anmodning kommer.
  • Kombinér en dedikeret gateway med en CDN edge for at bringe global IPFS-latens ned til 10-50 ms.

“IPFS er langsomt” er en af de mest almindelige udviklerklagen — og også en af de mest løselige. Den skyldige er næsten altid adgangsmetoden, ikke selve protokollen. Denne guide dækker fire teknikker, der eliminerer IPFS-latens i produktion.

IPFS Ninja

Vælg din IPFS-adgangsmetode efter hastighed#

AdgangsmetodeTypisk TTFBHvornår bruges den
Offentlig gateway (ipfs.io, dweb.link)2–15 sKun udvikling og test
Dedikeret gateway (fastgjort indhold)50–200 msAl produktionstrafik
Dedikeret gateway + CDN edge10–50 msGlobal brugerbasis
Billedoptimerings-endpoint<100 ms (varm)Alt billedindhold

Hvis du rammer offentlige gateways i produktion, skal du skifte til en dedikeret gateway, og det meste af din latens forsvinder straks.

Hvorfor offentlige gateways er langsomme#

Offentlige gateways udfører et DHT (Distributed Hash Table)-opslag for hvert CID, de ikke har set for nylig. DHT-opslag betyder at forespørge snesevis af peers på tværs af netværket for at finde, hvem der har indholdet — den tur-retur tager 2–15 sekunder ved en kold forespørgsel.

Selv ved et cache-hit betjener offentlige gateways millioner af brugere. Din nyligt fastgjorte fil har lav cacheprioritet og kan blive fjernet mellem forespørgsler.

Løsning 1: Dedikeret gateway#

En dedikeret gateway er privat for din konto. Filer, du fastgør, caches på den gateway med det samme — ingen DHT-opslag ved nogen forespørgsel, kold eller varm.

# Før: offentlig gateway, langsom og upålidelig
curl https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

# Efter: dedikeret gateway, hurtig og deterministisk
curl https://my-app.gw.ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

Opret en gateway i dit IPFS.NINJA-dashboard og sæt slug’en til at matche dit projekt. Gateway-slugs understøtter begrænset adgangstilstand (token påkrævet) eller åben tilstand til offentlige statiske aktiver.

Løsning 2: Fastgør ved skrivning, ikke ved læsning#

Fastgør filer i det øjeblik, de oprettes, så gatewayen har dem, inden nogen bruger anmoder om dem. Den hurtigste forespørgsel er en, der aldrig forårsager et cache-miss.

# Upload og fastgør i ét trin
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"
  }'

# Svar — gem CID'et, server URL'en med det samme
# {
#   "cid": "bafy...",
#   "sizeMB": 0.24,
#   "uris": {
#     "ipfs": "ipfs://bafy...",
#     "url": "https://ipfs.ninja/ipfs/bafy..."
#   }
# }

Hvis du har eksisterende CID’er fra en anden node eller pinningstjeneste, kan du genfastgøre uden at uploade igen:

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

Se hvordan man uploader filer til IPFS for den fulde upload API-reference.

Løsning 3: CDN foran din gateway#

Dedikerede gateways betjener fra en fast region. Hvis dine brugere spænder over kontinenter, skal du tilføje et CDN edge-lag til at betjene fra det nærmeste tilstedeværelsespunkt.

Fordi IPFS er indholdsadresseret — et givent CID opløses altid til identiske bytes — kan du cache for evigt:

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

Cloudflare-eksempel (gratis niveau dækker de fleste arbejdsbelastninger med statiske aktiver):

  1. Tilføj din gateway-subdomæne (my-app.gw.ipfs.ninja) som et Cloudflare-proxyet CNAME.
  2. Opret en sideregl: my-app.gw.ipfs.ninja/ipfs/*Cache Everything, Edge Cache TTL: en måned.
  3. Den første forespørgsel rammer gatewayen og caches ved den nærmeste edge PoP. Alle efterfølgende forespørgsler betjenes fra Cloudflare.

Resultat: global TTFB falder fra 50–200 ms til 10–50 ms.

Løsning 4: Billedoptimerings-API#

Rå IPFS-billeder i fuld opløsning bremser sider og skader Core Web Vitals. Brug billedoptimerings-endpointet til at ændre størrelse ved edge og betjene moderne formater:

# Original (fuld opløsning via gateway)
https://my-app.gw.ipfs.ninja/ipfs/bafy...

# Ændret størrelse til 800 px bred, konverteret til WebP
https://api.ipfs.ninja/image/bafy...?w=800&format=webp

# Kvadratisk miniature
https://api.ipfs.ninja/image/bafy...?w=200&h=200&fit=cover

I React:

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

Optimerings-endpointet cacher hver (cid, width, format)-kombination — efterfølgende forespørgsler med de samme parametre springer oprindret helt over.

Tjekliste#

  • Skift fra offentlige gateways til en dedikeret gateway
  • Fastgør indhold ved skrivning (ved upload), ikke ved læsning
  • Sæt Cache-Control: immutable på gateway-svar
  • Tilføj CDN foran gatewayen til global trafik
  • Betjen billeder via optimerings-endpointet i stedet for rå gateway-URL’er

For baggrund om, hvorfor pinning betyder noget for tilgængelighed — ikke kun hastighed — se hvad er IPFS pinning.


Klar til at begynde at fastgøre? Opret en gratis konto — 50 filer, 1 GB lagerplads, 2 GB båndbredde/md. Intet kreditkort påkrævet.

Om denne artikel: Denne artikel blev udkastet af en AI-assistent ved hjælp af IPFS.NINJA’s indholdsgenereringsworkflow og derefter gennemgået og godkendt af Nacho Coll. Alle kodeeksempler blev verificeret mod den live IPFS.NINJA API. Hvis du opdager en unøjagtighed, kan du åbne et issue på https://github.com/ipfs-ninja/feedback. Læs mere om hvordan vi bruger AI i vores indhold og mød menneskene bag IPFS.NINJA.

Nacho Coll

Om forfatteren

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.

Tilbage til Bloggen

Relaterede artikler