Caching in AEM Edge-functies edge-functions-caching

IMPORTANT
De Functies van AEM Edge zijn a bèta eigenschap. Functies en documentatie kunnen zonder kennisgeving worden gewijzigd. Om zich bij het vroege toegangsprogramma aan te sluiten en te verstrekken terugkoppelt, e-mail ​ aemcs-edgecompute-feedback@adobe.com ​.

Deze pagina verstrekt gedetailleerde technische begeleiding op hoe het in het voorgeheugen onderbrengen binnen de Functies van AEM Edge, met inbegrip van de twee-geheim voorgeheugenarchitectuur werkt, hoe te om in het voorgeheugen onderbrengend gedrag in uw code te controleren, en hoe te om geheim voorgeheugeningangen te zuiveren wanneer de inhoud verandert.

Voor algemene achtergrond op hoe AEM as a Cloud Service caching werkt, zie ​ Caching in AEM as a Cloud Service ​ en ​ CDN in AEM as a Cloud Service ​. Voor codevoorbeelden, verwijs naar ​ AEM Edge Functions Boilerplate — Caching ​.

Architectuur in cache architecture

AEM Edge-functies bevinden zich tussen de CDN en de back-endservices die de functie haalt. Deze achtergronden kunnen AEM zijn publiceer instanties, derde APIs, externe gegevensbestanden, of om het even welk eindpunt van HTTP uw codevraag. Er zijn twee verschillende geheime voorgeheugens in de verzoekstroom, elk onafhankelijk werkend:

Browser → AEM CDN (CDN Cache) → AEM Edge Functions (Fetch Cache) → Backend (AEM, APIs, etc.)
Cache
Wat het in cache plaatst
Beïnvloed door
Wissen
CDN Geheime voorgeheugen
De reactie van de functie Edge op de browser
Responsheaders die zijn ingesteld door de functie Edge (Cache-Control , Surrogate-Control , Surrogate-Key )
​ CDN Schoonmaken API van het Geheime voorgeheugen ​
het Geheime voorgeheugen van de de Functie van Edge
De reacties van de steun op fetch() vraag binnen de Functie van Edge, en gegevens die via de geheime voorgeheugen API van de Kern worden opgeslagen
De kopballen van de achtergrondreactie, CacheOverride op haalvraag, of programmatic substituutsleutels via het Geheime voorgeheugen API van de Kern
aio aem edge-functions purge-cache CLI-opdracht of purgeSurrogateKey()

Het begrip van deze twee-laag architectuur is essentieel omdat elk geheim voorgeheugen een verschillend werkingsgebied, verschillende controles, en een verschillend zuiveringsmechanisme heeft. Voor effectieve caching is een doelbewuste configuratie op beide niveaus vereist.

CDN-cache (buiten) cdn-cache

De CDN-cache bevindt zich tussen de browser en de Edge-functie. Het geheime voorgeheugens de reactie van de Functie van Edge . U bestuurt het gedrag door standaard HTTP-cacheheaders in te stellen op de Edge Function-antwoorden:

return new Response(body, {
  headers: {
    'Surrogate-Key': 'page-home product-123',
    'Cache-Control': 'public, max-age=3600'
  }
});

Meerdere vervangingstoetsen worden gescheiden door spaties. Deze vervangsleutels kunnen worden gebruikt om het CDN geheime voorgeheugen te zuiveren gebruikend de ​ CDN Woorden API van het Geheime voorgeheugen ​. Het concept substitueer zeer belangrijke het zuiveren is het zelfde als die in ​ wordt beschreven zuiveren het geheime voorgeheugen voor een groep middelen ​ - het belangrijkste verschil is dat de CDN vervangings hier sleutels door uw code van de Functie van Edge eerder dan door het achtereind worden geplaatst.

Edge Function Fetch Cache (binnen) fetch-cache

De de ophaalgeheime voorgeheugen van de Functie van Edge zit tussen de Functie van Edge en de achtergronden het roept. Het caches de reactie van de backend aan fetch() vraag die binnen uw code van de Functie van Edge wordt gemaakt. Het houdt ook om het even welke gegevens uw codeopslag via het Geheime voorgeheugen van de Kern API of Eenvoudig Geheime voorgeheugen API - programmatic caching interfaces die u nauwkeurige controle over geven wat in het voorgeheugen ondergebracht wordt, voor hoe lang, en waaronder vervangings sleutels.

Het wordt niet beïnvloed door kopballen u op de uitgaande reactie van de Functie van Edge plaatst - slechts door de antwoordkopballen van de backend, door CacheOverride opties op uw haalvraag, of door vervangsleutels toe te wijzen u programmatically wanneer het schrijven aan het Geheime voorgeheugen van de Kern API.

NOTE
De Surrogate-Key kopbal u op uw Functie van Edge uitgaande reactie aan browser controleert het buitengeheime voorgeheugen CDN, niet dit binnengeheime voorgeheugen plaatst. Surrogaattoetsen voor de binnencache zijn afkomstig van de Surrogate-Key response header van de backend of van sleutels die u toewijst bij het schrijven naar de Core Cache API.

Achterste reacties in cache plaatsen cache-override

Achterste reacties voor een bepaalde duur in cache plaatsen:

import { CacheOverride } from "fastly:cache-override";

const response = await fetch(request, {
  backend: "my-origin",
  cacheOverride: new CacheOverride({ ttl: 300 })
});

De cache omzeilen cache-pass

Als u de ophaalcache volledig wilt overslaan en altijd vanaf de achtergrond wilt ophalen, gebruikt u de modus pass :

import { CacheOverride } from "fastly:cache-override";

const response = await fetch(request, {
  backend: "my-origin",
  cacheOverride: new CacheOverride({ mode: "pass" })
});

Cache leegmaken cache-purging

Wanneer inhoud in de cache verouderd wordt, moet u deze expliciet leegmaken. Omdat de twee geheime voorgeheugens onafhankelijk werken, is het belangrijk om te begrijpen welke laag u ongeldig maakt en hoe zij op elkaar inwerken.

Opmaak over beide lagen coördineren coordinating-purges

Omdat de Functie van Edge achter CDN als backend (bereikbaar door ​ oorsprongselectors ​) zit, zuiverend één geheim voorgeheugenlaag zonder andere kan onverwachte resultaten veroorzaken:

  1. zuiverend slechts het CDN geheime voorgeheugen veroorzaakt het volgende verzoek om de Functie van Edge aan te halen. Als het ophaalgeheime voorgeheugen van de Functie van Edge nog geldige gegevens houdt, keert het oude inhoud terug — die CDN dan opnieuw in het voorgeheugen onderbrengt.
  2. zuiverend slechts het geheime voorgeheugen van de Functie van Edge ontruimt interne staat, maar CDN blijft het dienen van zijn eerder caching exemplaar tot het verloopt of afzonderlijk wordt gezuiverd.

Beste praktijken: wanneer de onderliggende gegevens veranderen, zuiveren allebei geheime voorgeheugens - gebruik CDN de Woorden van het Geheime voorgeheugen API voor de buitenlaag en purge-cache (of purgeSurrogateKey()) voor de binnenlaag van de Functie van Edge. Het gebruik van consistente vervangingstoetsen in beide lagen vereenvoudigt de gecoördineerde ongeldigheid. Voor een volledig voorbeeld van dit patroon, zie ​ AEM Edge Functions Boilerplate — het Schrappen ​.

De CDN-cache leegmaken purge-cdn-cache

Om het buitengeheime voorgeheugen te zuiveren CDN (de reactie van de Functie van Edge caching bij de laag CDN), gebruik ​ CDN de Woorden API van het Geheime voorgeheugen ​. Dit is het zelfde zuiveringsmechanisme dat voor alle inhoud van AEM as a Cloud Service wordt gebruikt die bij CDN in het voorgeheugen wordt opgeslagen — zie ​ hoe te om het CDN geheime voorgeheugen ​ voor geleidelijke begeleiding te zuiveren.

In de architectuur van AEM as a Cloud Service, ontvangen de Functies van Edge verkeer van CDN via ​ oorsprongselectors ​ (zie ook ​ CDN die ​ verplettert). De volledige aanvraagstroom is:

Client → AEM CDN (VCL) → Origin Selector → Edge Function → Backend

De CDN slaat de laatste reactie in cache die door de functie Edge wordt geretourneerd. Een CDN zuivering ontruimt slechts dat buiten caching reactie — het heeft geen effect op de interne geheime voorgeheugens van de Functie van Edge.

De Edge-functieophaalcache leegmaken purge-fetch-cache

Het purge-cache CLI bevel zuiveert het de ophaalgeheime voorgeheugen van de Functie van Edge (de achterste die reacties binnen de Functie van Edge worden in het cachegeheugen onder gebracht). Het wrijft niet het buitengeheim voorgeheugen CDN. Voor volledige CLI opties en vlaggen, zie de purge-cache bevelverwijzing ​.

Waar vervangende sleutels vandaan komen surrogate-key-origin

De vervangende sleutels die in purge bevelen worden gebruikt moeten de sleutels aanpassen die op de caching inhoud in de tijd werden geëtiketteerd het werd opgeslagen. Dit is het zelfde concept zoals ​ surrogate op sleutel-gebaseerde het zuiveren ​ gebruikt in AEM CDN, maar toegepast op het interne geheime voorgeheugen van de Functie van Edge. Deze toetsen komen van:

  • De Surrogate-Key reactie header die de backend retourneert wanneer de Edge Function ervan wordt opgehaald.
  • Toetsen u wijzen programmatically toe wanneer het schrijven aan het ​ Geheime voorgeheugen van de Kern API ​ (b.v., via de surrogateKeys optie wanneer het opnemen van een geheim voorgeheugeningang).

Bijvoorbeeld, als uw backend met antwoordt:

HTTP/1.1 200 OK
Content-Type: text/html
Surrogate-Key: page-about product-456 category-shoes
Cache-Control: public, max-age=3600

Vervolgens wordt de reactie in de cache gelabeld met drie vervangingstoetsen: page-about , product-456 en category-shoes . U kunt het later leegmaken met een van de volgende toetsen:

# Purge all cached content tagged with "product-456"
aio aem edge-functions purge-cache <function-name> --surrogateKey product-456

# Purge multiple keys at once
aio aem edge-functions purge-cache <function-name> -k page-about -k category-shoes
TIP
Kies vervangings zeer belangrijke noemende overeenkomsten die aan uw inhoudsmodel - bijvoorbeeld, door paginapad (page-about), inhouds identiteitskaart (product-456), of inhoudstype (category-shoes) in kaart brengen. Hierdoor wordt de beoogde invalidatie van de cache intuïtief wanneer de inhoud verandert.

Alles wissen purge-all

# Purge all cached content (use with caution)
aio aem edge-functions purge-cache <function-name> --all

Zacht leegmaken soft-purge

Gebruik de markering --soft om een zachte zuivering uit te voeren, waarbij geldige items in de cache blijven staan en de belasting van de back-end wordt verminderd terwijl validatie van de schaal wordt ingeschakeld:

aio aem edge-functions purge-cache <function-name> --surrogateKey product-456 --soft

Programmatische zuivering programmatic-purge

U kunt vervangsleutels ook programmatically van binnen uw code van de Functie van Edge zuiveren gebruikend purgeSurrogateKey:

import { purgeSurrogateKey } from "fastly:compute";

// Hard purge (immediate removal)
purgeSurrogateKey("product-456");

// Soft purge (retain stale entries for revalidation)
purgeSurrogateKey("product-456", true);
CAUTION
Het leegmaken van alle inhoud in de cache verhoogt het verkeer naar achteren. Gebruik de markering --all zorgvuldig en geef waar mogelijk de voorkeur aan gerichte vervangingstekens.
recommendation-more-help
experience-manager-cloud-service-help-main-toc