Caching in AEM Edge-functies edge-functions-caching
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-Control , Surrogate-Control , Surrogate-Key )fetch() vraag binnen de Functie van Edge, en gegevens die via de geheime voorgeheugen API van de Kern worden opgeslagenCacheOverride op haalvraag, of programmatic substituutsleutels via het Geheime voorgeheugen API van de Kernaio 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.
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:
- 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.
- 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-Keyreactie 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
surrogateKeysoptie 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
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);
--all zorgvuldig en geef waar mogelijk de voorkeur aan gerichte vervangingstekens.