AEM Publish
De AEM Publish-service heeft twee primaire cachelagen: de AEM as a Cloud Service CDN en AEM Dispatcher. Naar keuze kan een klant beheerde CDN vóór AEM as a Cloud Service CDN worden geplaatst. De AEM as a Cloud Service CDN biedt randlevering van inhoud en zorgt ervoor dat gebruikers over de hele wereld met een lage latentie van ervaringen worden voorzien. AEM Dispatcher biedt caching direct vóór AEM Publish en wordt gebruikt om onnodige belasting op AEM Publish zelf te verminderen.
{align="center"}
CDN
Het in cache plaatsen van CDN voor AEM as a Cloud Service wordt beheerd door HTTP response cache headers en is bedoeld om inhoud in cache te plaatsen om de balans tussen versheid en prestaties te optimaliseren. De CDN bevindt zich tussen de eindgebruiker en de AEM Dispatcher en wordt gebruikt om inhoud zo dicht mogelijk bij de eindgebruiker in cache te plaatsen, zodat een presterende ervaring wordt gegarandeerd.
{align="center"}
Het vormen hoe CDN inhoud in het voorgeheugen onderbrengt is beperkt tot het plaatsen van geheim voorgeheugenkopballen op de reacties van HTTP. Deze cacheheaders worden doorgaans ingesteld in AEM Dispatcher-hostconfiguraties met mod_headers
, maar kunnen ook worden ingesteld in aangepaste Java™-code die wordt uitgevoerd in AEM Publish zelf.
Wanneer worden HTTP-aanvragen/reacties in cache geplaatst?
AEM as a Cloud Service CDN plaatst alleen HTTP-reacties in cache en aan alle volgende criteria moet worden voldaan:
- De status van de HTTP-reactie is
2xx
of3xx
- HTTP-aanvraagmethode is
GET
ofHEAD
- Ten minste een van de volgende HTTP-responsheaders is aanwezig:
Cache-Control
,Surrogate-Control
ofExpires
- De HTTP-reactie kan elk inhoudstype zijn, zoals HTML, JSON, CSS, JS en binaire bestanden.
Door gebrek, hebben de reacties van HTTP niet in het voorgeheugen ondergebracht door AEM Dispatcherautomatisch om het even welke kopballen van het de reactiecache van HTTP verwijderd om caching bij CDN te vermijden. Dit gedrag kan indien nodig zorgvuldig worden overschreven met mod_headers
met de aanwijzing Header always set ...
.
Wat is in cache geplaatst?
AEM as a Cloud Service CDN slaat het volgende in cache op:
- HTTP-responsinstantie
- HTTP-antwoordheaders
Een HTTP-aanvraag/reactie voor één URL wordt doorgaans als één object in de cache opgeslagen. De CDN kan echter meerdere objecten voor één URL in cache plaatsen wanneer de header Vary
wordt ingesteld op het HTTP-antwoord. Vermijd het opgeven van Vary
op headers waarvan de waarden geen strak gecontroleerde reeks waarden hebben, aangezien dit kan leiden tot veel cachevervallen, waardoor de hit-verhouding van de cache afneemt. Om caching van variërende verzoeken bij AEM Dispatcher te steunen, herzie de variant caching documentatie.
Levensduur cache cdn-cache-life
De AEM Publish CDN is op TTL (time-to-live) gebaseerd, wat betekent dat de levensduur van de cache wordt bepaald door de HTTP-antwoordheaders Cache-Control
, Surrogate-Control
of Expires
. Als de reactie van HTTP in het voorgeheugen onderbrengende kopballen niet door het project worden geplaatst, en de geschiktheidscriteriaworden voldaan, plaatst de Adobe een standaardgeheim voorgeheugenleven is 10 minuten (600 seconden).
Hier is hoe de geheim voorgeheugenkopballen het CDN geheim voorgeheugenleven beïnvloeden:
Cache-Control
HTTP- antwoordkopbal instrueert Webbrowser en CDN hoe lang om de reactie in het voorgeheugen onder te brengen. De waarde is in seconden.Cache-Control: max-age=3600
geeft de webbrowser bijvoorbeeld de opdracht de reactie gedurende een uur in cache te plaatsen. Deze waarde wordt genegeerd door de CDN alsSurrogate-Control
HTTP response header ook aanwezig is.Surrogate-Control
HTTP- antwoordkopbal instrueert de AEM CDN hoe lang om de reactie in het voorgeheugen onder te brengen. De waarde is in seconden.Surrogate-Control: max-age=3600
geeft de CDN bijvoorbeeld de opdracht de reactie gedurende een uur in cache te plaatsen.Expires
De kopbal van de HTTP- reactie instrueert de AEM CDN (en Webbrowser) hoe lang de caching reactie geldig is. De waarde is een datum.Expires: Sat, 16 Sept 2023 09:00:00 EST
geeft de webbrowser bijvoorbeeld de opdracht om de reactie in cache te plaatsen tot de opgegeven datum en tijd.
Gebruik Cache-Control
om de levensduur van de cache te bepalen wanneer deze hetzelfde is voor zowel de browser als de CDN. Gebruik Surrogate-Control
wanneer de webbrowser de reactie voor een andere duur in cache moet plaatsen dan de CDN.
Standaardcache-levensduur
Als een reactie van HTTP voor AEM Dispatcher in het voorgeheugen onderbrengend per bovengenoemde bepalerskwalificeert, zijn het volgende de standaardwaarden tenzij de douaneconfiguratie aanwezig is.
Cacheregels aanpassen
Vormend hoe CDN inhoudin het voorgeheugen onderbrengt beperkt is tot het plaatsen van geheim voorgeheugenkopballen op de reacties van HTTP. Deze cacheheaders worden doorgaans ingesteld in AEM Dispatcher vhost
-configuraties met mod_headers
, maar kunnen ook worden ingesteld in aangepaste Java™-code die wordt uitgevoerd in AEM Publish zelf.
AEM Dispatcher
{align="center"}
Wanneer worden HTTP-aanvragen/reacties in cache geplaatst?
HTTP-reacties voor corresponderende HTTP-aanvragen worden in de cache geplaatst wanneer aan alle volgende criteria wordt voldaan:
-
HTTP-aanvraagmethode is
GET
ofHEAD
HEAD
HTTP-aanvragen slaan alleen de HTTP-antwoordheaders in de cache op. Ze hebben geen reactieorganen.
-
De status van de HTTP-reactie is
200
-
De reactie van HTTP is NIET voor een binair dossier.
-
Het URL-pad van de HTTP-aanvraag eindigt met een extensie, bijvoorbeeld:
.html
,.json
,.css
,.js
, enzovoort. -
HTTP-aanvraag bevat geen autorisatie en wordt niet door AEM geverifieerd.
- Nochtans, kan het caching van voor authentiek verklaarde verzoeken globaalof selectief via toestemming worden toegelaten gevoelig caching.
-
HTTP-aanvraag bevat geen queryparameters.
- Nochtans, het vormen Genegeerde vraagparametersstaat HTTP- verzoeken met de genegeerde vraagparameters toe om van het geheime voorgeheugen worden in cache worden opgeslagen/worden gediend.
-
De weg van HTTP- verzoek past een regel van Dispatcher toe, en past geen ontkent regelaan.
-
HTTP-respons heeft geen van de volgende HTTP-responsheaders die door AEM Publish zijn ingesteld:
no-cache
no-store
must-revalidate
Wat is in cache geplaatst?
AEM Dispatcher plaatst het volgende in de cache:
-
HTTP-responsinstantie
-
De de reactiekopballen van HTTP die in de Dispatcher configuratie van de geheim voorgeheugenkopballenworden gespecificeerd. Zie de standaardconfiguratie die schepen met AEM Archetype van het Project.
Cache-Control
Content-Disposition
Content-Type
Expires
Last-Modified
X-Content-Type-Options
Levensduur cache
AEM Dispatcher plaatst HTTP-reacties in cache met de volgende methoden:
- Totdat de validatie wordt geactiveerd door mechanismen zoals het publiceren of ongedaan maken van de publicatie van de inhoud.
- TTL (tijd-aan-levende) wanneer uitdrukkelijk in de configuratie van Dispatcherwordt gevormd. Zie de standaardconfiguratie in AEM Archetype van het Projectdoor de
enableTTL
configuratie te herzien.
Standaardcache-levensduur
Als een reactie van HTTP voor AEM Dispatcher in het voorgeheugen onderbrengend per bovengenoemde bepalerskwalificeert, zijn het volgende de standaardwaarden tenzij de douaneconfiguratie aanwezig is.
Cacheregels aanpassen
Het AEM geheime voorgeheugen van Dispatcher kan via de configuratie van Dispatchermet inbegrip van worden gevormd:
- Wat is in cache geplaatst
- Welke delen van de cache ongeldig worden gemaakt bij publiceren/verwijderen
- Welke parameters van de HTTP-aanvraagquery worden genegeerd bij de evaluatie van de cache
- Welke HTTP-antwoordheaders worden in cache geplaatst
- Het in cache plaatsen van TTL inschakelen of uitschakelen
- … en nog veel meer
Als u mod_headers
gebruikt om cacheheaders in te stellen, heeft de vhost
-configuratie geen invloed op Dispatcher caching (op basis van TTL), aangezien deze worden toegevoegd aan de HTTP-respons nadat AEM Dispatcher de reactie heeft verwerkt. Om Dispatcher-caching via HTTP-antwoordheaders te beïnvloeden, is aangepaste Java™-code vereist die wordt uitgevoerd in AEM Publish die de juiste HTTP-antwoordheaders instelt.