Orbit

Edge Functions

Edge functions are small JavaScript handlers that run on Kapsule's edge network before a request reaches your project, so you can do redirects, header injection, A/B routing and bot filtering…

Ngā Mahi a te Tìpako

Ko ngā mahi a te tīpako he tohu JavaScript iti e rere ana i runga i te whatunga tīpako a Kapsule i mua i te tae mai o te karanga ki tō kaupapa, ka taea e koe te kawe tīaturi, whakauru pane, routing A/B me te tātari ira-tūmataiti kāore he haerenga ki tō āpata. Kei roto i tēnei aratohu te tuhi i tētahi, ngā āhuatanga whakauru-whakaputa e whakaae ana, te tutumatching huarahi, me pēhea e mahi tahi ai ngā mahi maha, te whakaputa, me tā te mea ka tupu mēna ka whakahoki he mahi.

Kei Hea Rātou e Noho Ana

Whakatūtuki i tō kaupapa i roto i Orbit me pēwhiri i te tapawhā Edge functions. E ono ana ia mahi ki te kaupapa, e tāpeakihia ana me tōna tohu ahuatanga: LIVE, PAUSED, NOT DEPLOYED rānei DEPLOY FAILED.

Edge functions tab of an Orbit project

Te Hanganga Mahi

  1. Pēwhiri i New function.
  2. Whakakī i Name (kia 120 pūtakiroa).
  3. Whakakī i Path pattern, te tauira URL e tika ana mō tēnei mahi.
  4. Tīpako Trigger: Request (i mua o te putake), Response (i muri i te putake), rānei Both.
  5. Tīpako Environment scope: All environments, Production only, rānei Preview only.
  6. Tuhi i te kaiwhakahaere i Function body.
  7. Pēwhiri i Save, ka pēwhiri Deploy to edge.

Ko te request kīanga e mau tonu ana i roto i te tawhā, me te putake ka oti i te 64 KB.

Te Tuhi i te Kaiwhakahaere

Whakahoki he Response hei whakautu i te karanga i te tīpako. Kāore he whakahoki, rānei undefined, ki te tuku i te karanga ki tō kaupapa kāore he rerekē.

export default {
  async fetch(request) {
    const url = new URL(request.url)

    // Redirect /old to /new
    if (url.pathname === '/old') {
      return new Response(null, {
        status: 301,
        headers: { Location: '/new' },
      })
    }

    // Returning nothing passes through to the origin
  },
}

Ko te āhuatanga mahi tohua he mahi nui hoki:

export default async function handler(request) {
  // Add a security header to every response
  const response = await fetch(request)
  const headers = new Headers(response.headers)
  headers.set('X-Frame-Options', 'DENY')
  return new Response(response.body, { status: response.status, headers })
}

Ngā Āhuatanga Whakauru-Whakaputa e Whakaaetia Ana

ĀhuatangaTauira
Taonga me he fetch ahuatangaexport default { async fetch(request) { ... } }
Taonga me he pere fetch āhuatangaexport default { fetch: async (request) => { ... } }
Whakahōkinga mahi tohuaexport default async function handler(request) { ... }
Tinana maori, kaore he kaupapaTuhia ngā tāpiringa tika, kāore he turiwha

Anumea atu e whakamahi ana i export default, penei i export default class, ka kairangahia i te wa e pēwhiri ai koe Save, me te hapa e whakahua ana i ngā āhuatanga e rua hei whakamahi. Ka rere te whakamataotao i te wa o te tiaki, ina koa ka mohio koe i te whakaputa, kāore he mahi whakatika koa i te whakaputa.

Ngā Tauira Huarahi

Ko te Path pattern te whakatau mō te karanga e rere ai te mahi. Me tiimata me / me te ahea kia 2048 pūtakiroa. Ko * e tutupiri ana i te mahinga noa o ngā pūtakiroa me ? e tutupiri ana i te pūtakiroa kotahi. He tauira kāore he wildcard ka tutupiri i tērā huarahi tika me te katoa i raro.

TauiraE tutupiri ana
/*Ia huarahi
/api/*Anumea atu e tiimata ana me /api/
/blog/*/commentsHei tauira /blog/my-post/comments
/page/page, me te katoa i raro /page/

Te request Taonga

Ko request he Fetch API Request paerewa. Ka taea e koe te pānui i te URL, te ahuatanga, ngā pane me te tinana:

export default {
  async fetch(request) {
    const url    = new URL(request.url)
    const cookie = request.headers.get('cookie') ?? ''
    const ua     = request.headers.get('user-agent') ?? ''

    if (ua.includes('BadBot')) {
      return new Response('Forbidden', { status: 403 })
    }
  },
}

Kāore e whakaaro he pane e tipu ana nā te mea kua kite koe i tētahi kaupapa. Pānuihia ngā pane e tino riro ana e tō mahi iho (tuhi iho rātou noa i te mahi, rānei whakahoki i roto i te whakautu pūtātara i te huarahi whakawhakaaro) i mua i te whakatau i tētahi. Ko te kaiwhakahaere e whakatau ana i te pane e kore nei e puta ana, ka riro hē i ia karanga.

Ngā Tauira Noa

Kawe Tīaturi Huarahi Tawhito

export default {
  async fetch(request) {
    const url = new URL(request.url)
    const redirects = {
      '/old-about':   '/about',
      '/old-contact': '/contact',
    }
    const dest = redirects[url.pathname]
    if (dest) return Response.redirect(url.origin + dest, 301)
  },
}

Mō te maha noa o ngā nekehanga huarahi-ki-huarahi tika, whakamahi i te miihini kawe tīaturi tūturu: e kore e hiahia ki te whakaaro me ka whakatakotoria i roto i Settings. Titiro Configuring Redirects and Rewrites.

Tāpiri i ngā Pane Haumaru

export default async function handler(request) {
  const response = await fetch(request)
  const headers = new Headers(response.headers)
  headers.set('X-Frame-Options', 'DENY')
  headers.set('X-Content-Type-Options', 'nosniff')
  headers.set('Referrer-Policy', 'strict-origin-when-cross-origin')
  return new Response(response.body, {
    status: response.status,
    statusText: response.statusText,
    headers,
  })
}

Mō ngā ture pane tūturu e kore e hiahia ki te whakaaro. Ko Settings he waahanga pane whakautu me ngā taonga pikitanga tere mō HSTS, CSP, no-embed, no-sniff, rautaki kupu tohutoro me CORS.

A/B Routing

export default {
  async fetch(request) {
    const url     = new URL(request.url)
    const variant = Math.random() < 0.5 ? 'a' : 'b'
    url.searchParams.set('variant', variant)
    return fetch(url.toString(), request)
  },
}

Te Āhuatanga Tūmomo Taiao

ĀhuatangaE rere ana i runga
All environmentsWhakaputa, whakatutuki me ia preview peka
Production onlyTe taiao whakaputa
Preview onlyIa taiao kāore-whakaputa

Whakatutakitaki i te mahi hou me Preview only, whakatūtuki me pēhea tōna āhuatanga i te preview peka, ka whakaohohia ki All environments. E rere ana he mahi tīpako i mua o ia karanga, ina koa ka he i roto i tētahi he he i ia whārangi.

Me Pēhea e Mahi Tahi ai Ngā Mahi Maha

Kua arotakea ngā mahi whakapahotia katoa o tō kaupapa i te raupapa i hangaia ai. Mō ia karanga, ka haere te tīpako i te rārangi me te rere i te mahi tuatahi e tutupiri ana te tauira huarahi me te āhuatanga e āta ki te taiao.

  • Mēna ka whakahoki te mahi i te Response, ka tonoa, ka mutu te arotake.
  • Mēna kaore he whakahoki, ka haere te arotake ki te mahi tutupiri a harikoa.
  • Mēna kaore he mahi i whakahoki he Response, ka haere te karanga ki tō kaupapa i te āhuatanga noa.

Ko tēnei te tikanga: he mahi whanui /* i hangaia i te tiimata ka whakamarara i tētahi whanui iti i hangaia ake nei, mēna ka whakahoki te mahi whanui i he Response. Hangaia te mahi ikeike tuatahi, rānei ka whakahoki te mahi whanui i te kaore mō ngā huarahi kāore ia e whakahaere.

Te Whakaputa

Pēwhiri i Deploy to edge. Ko te whakaputa ka whakahanga i te tahi rūrūter whakakotahi mō te katoa o te whatunga tīpako mai i te āhuatanga o nāianei o te pūtabase, ina koa whakaahoatia, mutu, whakarerekē rānei whakakore i te mahi katoa. Ka tae ake ngā rerekē i te roto harikoa i ētahi hēkona.

Ka mau ia rarangi mahi i te Deploy log e whakaatu ana i ngā hakinga o te whakaputa o muri, me te DEPLOY FAILED tohu me te hapa mēna kaore i angitu.

Pause ka tango i te mahi noa i te rūrūter kāore whakakore, he āhuatanga whakapoto rawa ki te whakahoki i te mahi e kino ana. Resume ka whakakore.

Mēna He Mahi ka Hinga

He ahuatanga i roto i te mahi ka hopu i te tīpako. Ka tuhi te hapa me te karanga ka haere ki tō kaupapa pēnei i te mahi ka whakahoki i te kaore.

Koinei te kupu haumaru, ehara i te punaha aroturuki. He mahi e hinga ana i ia karanga ka kore ake i ngā kanohi o ō manuhiri, me tō toka noa te āhuatanga me te mahi kaore e tipu ana. Mēna he mahi ka tīpako i te tohu o tōna whakatūtuki, whakatūpato i te hinga i mua o te routing.

Ngā Rohe

  • Kia 20 mahi i te kaupapa. Ko te 21 ka kairangahia.
  • Kia 64 KB putake mō ia mahi.
  • Kia 120 pūtakiroa mō te ingoa, me 2048 pūtakiroa mō te tauira huarahi.

Te Āhuatanga Pānui

E hiahia ana koe i te awhina?

Tīmēra mai ki a support@kapsulehost.com manatoko tahi rānei i roto i KPanel.

Whakatuwhera KPanel
Edge Functions