Inschakelen in cache
<- Vorige: uitleg van configuratiebestanden
In dit document wordt uitgelegd hoe Dispatcher caching plaatsvindt en hoe het kan worden geconfigureerd
Caching Directories
Wij gebruiken de volgende standaardgeheim voorgeheugenfolders in onze basislijninstallaties
- Auteur
/mnt/var/www/author
- Uitgever
/mnt/var/www/html
Wanneer elke aanvraag de Dispatcher doorloopt, volgen de aanvragen de geconfigureerde regels om een versie in de lokale cache te behouden als reactie op in aanmerking komende items
Configuratiebestanden
Dispatcher bepaalt wat als cacheable in de /cache {
sectie van om het even welk landbouwbedrijfdossier kwalificeert.
In de de basislijnconfiguratielandbouwbedrijven van AMS, zult u onze hieronder getoonde omvat vinden:
/cache {
/rules {
$include "/etc/httpd/conf.dispatcher.d/cache/ams_author_cache.any"
}
Wanneer het creëren van de regels voor wat om al dan niet in het voorgeheugen onder te brengen, gelieve te verwijzen naar de documentatie hier
Auteur in cache
Er zijn veel implementaties die we hebben gezien waar mensen geen auteursinhoud in cache plaatsen.
Ze missen een enorme verbetering in prestaties en responsiviteit voor hun auteurs.
Laten wij over de strategie spreken die in het vormen van onze auteurshandel wordt genomen om behoorlijk in het voorgeheugen onder te brengen.
Hier volgt een sectie van de basis auteur /cache {
van ons dossier van de auteurshandel:
/cache {
/docroot "/mnt/var/www/author"
/statfileslevel "2"
/allowAuthorized "1"
/rules {
$include "/etc/httpd/conf.dispatcher.d/cache/ams_author_cache.any"
}
/invalidate {
/0000 {
/glob "*"
/type "allow"
}
}
/allowedClients {
/0000 {
/glob "*.*.*.*"
/type "deny"
}
$include "/etc/httpd/conf.dispatcher.d/cache/ams_author_invalidate_allowed.any"
}
}
Het is belangrijk om hier op te merken dat /docroot
aan de geheim voorgeheugenfolder voor auteur wordt geplaatst.
DocumentRoot
in het .vhost
-bestand van de auteur overeenkomt met de /docroot
-parameterDe cacheregels bevatten een instructie die het bestand /etc/httpd/conf.dispatcher.d/cache/ams_author_cache.any
bevat dat de volgende regels bevat:
/0000 {
/glob "*"
/type "deny"
}
/0001 {
/glob "/libs/*"
/type "allow"
}
/0002 {
/glob "/libs/*.html"
/type "deny"
}
/0003 {
/glob "/libs/granite/csrf/token.json"
/type "deny"
}
/0004 {
/glob "/apps/*"
/type "allow"
}
/0005 {
/glob "/apps/*.html"
/type "deny"
}
/0006 {
/glob "/libs/cq/core/content/welcome.*"
/type "deny"
}
In een auteurscenario, verandert de inhoud voortdurend en doelgericht. U wilt slechts punten in het voorgeheugen onderbrengen die niet vaak zullen veranderen.
We hebben regels om /libs
in cache op te slaan, omdat ze onderdeel zijn van de basislijn AEM worden geïnstalleerd en worden gewijzigd totdat u een Service Pack, Cumulative Fix Pack, Upgrade of Hotfix hebt geïnstalleerd. Het in cache plaatsen van deze elementen heeft veel zin en heeft echt enorme voordelen van de ervaring van auteurs van eindgebruikers die de site gebruiken.
/apps
in cache plaatsen, dit is waar aangepaste toepassingscode zich bevindt. Als u uw code op deze instantie ontwikkelt dan zal het zeer verwarrend blijken te zijn wanneer u sparen uw dossier en niet ziet of in UI wegens het dienen van een caching exemplaar nadenken. De bedoeling is hier dat als u een plaatsing van uw code in AEM het doet het ook niet vaak zou zijn en een deel van uw plaatsingsstappen zou moeten zijn om het auteursgeheime voorgeheugen te ontruimen. Ook hier is het voordeel enorm, waardoor uw code sneller kan worden uitgevoerd voor de eindgebruikers.ServeOnStale (AKA Serve on Stale / SOS)
Dit is een van die uitingen van een kenmerk van de Dispatcher. Als de uitgever onder lading is of niet meer reageert zal het typisch een 502 of 503 http antwoordcode werpen. Als dat gebeurt en deze eigenschap wordt toegelaten zal Dispatcher worden geïnstrueerd om nog te dienen wat de inhoud nog in het geheime voorgeheugen als beste inspanning is zelfs als het geen vers exemplaar is. Het is beter om iets te dienen als u het eerder dan enkel een foutenmelding hebt tonen die geen functionaliteit aanbiedt.
Dit plaatsen kan in om het even welk landbouwbedrijf worden geplaatst maar slechts steek houdt om het op toe te passen publiceert landbouwbedrijfdossiers. Hier is een syntaxisvoorbeeld van de eigenschap die in een landbouwbedrijfdossier wordt toegelaten:
/cache {
/serveStaleOnError "1"
Pagina's met queryparams/argumenten in cache plaatsen
/content/page.html?myquery=value
), deze het cachegeheugen van het bestand overslaat en rechtstreeks naar de AEM-instantie gaat. Het overweegt dit verzoek om een dynamische pagina en zou niet in het voorgeheugen ondergebracht moeten worden. Dit kan negatieve gevolgen voor geheim voorgeheugenefficiency veroorzaken.Zie dit artikeltonen hoe de belangrijke vraagparameters uw plaatsprestaties kunnen beïnvloeden.
Standaard wilt u de ignoreUrlParams
-regels zo instellen dat *
wordt toegestaan. Betekenis dat alle vraagparameters worden genegeerd en alle pagina's om ongeacht de gebruikte parameters in het voorgeheugen worden geplaatst.
Hier is een voorbeeld waarin iemand een diepgaande-koppelingsverwijzingsmechanisme voor sociale media heeft gebouwd dat de argumentverwijzing in URI gebruikt om te weten waar de persoon uit kwam.
Genegeerde Voorbeeld:
- https://www.we-retail.com/home.html?reference=android
- https://www.we-retail.com/home.html?reference=facebook
De pagina is 100% cacheable maar houdt geen cache omdat de argumenten aanwezig zijn.
Als u ignoreUrlParams
configureert als lijst van gewenste personen, kunt u dit probleem verhelpen:
/cache {
/ignoreUrlParams {
/0001 { /glob "*" /type "allow" }
}
Nu de Dispatcher de aanvraag ziet, negeert deze het feit dat de aanvraag de query
parameter of ?
reference heeft en toch de pagina in cache plaatst
Dynamisch Voorbeeld:
- https://www.we-retail.com/search.html?q=fruit
- https://www.we-retail.com/search.html?q=vegetables
Houd in mening dat als u vraagparameters hebt die een pagina maken het output teruggegeven maken dan zult u hen van uw genegeerde lijst moeten uitsluiten en de pagina uncacheable opnieuw maken. Een zoekpagina die een queryparameter gebruikt, wijzigt bijvoorbeeld de weergegeven onbewerkte HTML.
Hier is de HTML-bron van elke zoekopdracht:
/search.html?q=fruit
:
<html>
...SNIP...
<div id='results'>
<div class='result'>
Orange
</div>
<div class='result'>
Apple
</div>
<div class='result'>
Strawberry
</div>
</div>
</html>
/search.html?q=vegetables
:
<html>
...SNIP...
<div id='results'>
<div class='result'>
Carrot
</div>
<div class='result'>
Cucumber
</div>
<div class='result'>
Celery
</div>
</div>
</html>
Als u /search.html?q=fruit
eerst bezocht, zou het HTML met resultaten in de cache plaatsen die fruit tonen.
Vervolgens bezoekt u /search.html?q=vegetables
seconde, maar geeft u resultaten van fruit.
De reden hiervoor is dat de queryparameter van q
wordt genegeerd voor caching. Om deze kwestie te vermijden zult u nota moeten nemen van pagina's die verschillende HTML die op vraagparameters worden gebaseerd teruggeven en caching voor die ontkennen.
Voorbeeld:
/cache {
/ignoreUrlParams {
/0001 { /glob "*" /type "allow" }
/0002 { /glob "q" /type "deny" }
}
Pagina's die queryparameters gebruiken via Javascript, werken nog steeds volledig zonder de parameters in deze instelling te negeren. Omdat ze het HTML-bestand in rust niet wijzigen. Ze gebruiken javascript om de browsers in realtime bij te werken in de lokale browser. Betekenis dat als u de vraagparameters met javascript verbruikt het hoogst waarschijnlijk u deze parameter voor pagina caching kunt negeren. Laat die pagina in cache plaatsen en geniet van de prestatiewinst!
Responsheaders in cache plaatsen
Het is vrij duidelijk dat de Dispatcher .html
pagina's en clientlibs (d.w.z. .js
, .css
) in cache plaatst, maar wist u dat het ook bepaalde antwoordheaders kan opslaan naast de inhoud in een bestand met dezelfde naam maar met een .h
-bestandsextensie. Hierdoor is de volgende reactie niet alleen mogelijk op de inhoud, maar ook op de antwoordheaders die ermee moeten worden verbonden vanuit de cache.
AEM kan meer dan alleen UTF-8-codering verwerken
Soms hebben de punten speciale kopballen die helpen de het coderen van geheime voorgeheugenTTL details controleren, en laatst veranderde timestamps.
Deze waarden worden standaard verwijderd wanneer ze in de cache worden opgeslagen en de Apache httpd-webserver verwerkt het middel zelf met de normale bestandsafhandelingsmethoden. Normaal gesproken is dit beperkt tot Mime Type guessing op basis van bestandsextensies.
Als u het element en de gewenste koppen in de Dispatcher-cache hebt opgeslagen, kunt u de juiste ervaring beschikbaar maken en ervoor zorgen dat alle gegevens dit in de clientbrowser doen.
Hier is een voorbeeld van een landbouwbedrijf met de kopballen aan gespecificeerde geheime voorgeheugen:
/cache {
/headers {
"Cache-Control"
"Content-Disposition"
"Content-Type"
"Expires"
"Last-Modified"
"X-Content-Type-Options"
}
}
In het voorbeeld hebben zij AEM gevormd om omhoog kopballen te dienen CDN zoekt om te weten wanneer om het cachegeheugen ongeldig te maken. Dit betekent dat AEM correct kan bepalen welke bestanden op basis van kopteksten ongeldig worden gemaakt.
Respijtperiode automatisch ongeldig maken
Op AEM systemen die veel activiteit hebben van auteurs die veel paginanavigaties uitvoeren, kunt u een zeldzame situatie hebben waarin herhaalde validaties voorkomen. Zware herhaalde verzoeken om uitspoelen zijn niet nodig en u kunt enige tolerantie gebruiken om een uitspoeling niet te herhalen totdat de respijtperiode is gewist.
Voorbeeld van hoe dit werkt:
Als u 5 verzoeken hebt om /content/exampleco/en/
ongeldig te maken, gebeurt dit allemaal binnen een periode van 3 seconden.
Met deze functie zou u de cachemap vijf keer ongeldig maken /content/exampleco/en/
Met deze eigenschap op en reeks aan 5 seconden zou het de geheim voorgeheugenfolder /content/exampleco/en/
eens ongeldig maken
Hier is een voorbeeldsyntaxis van deze eigenschap die voor 5 tweede graadperiode wordt gevormd:
/cache {
/gracePeriod "5"
Op TTL gebaseerde validatie
Een nieuwere functie van de Dispatcher-module was op Time To Live (TTL)
gebaseerde validatieopties voor items in de cache. Wanneer een item in de cache wordt geplaatst, zoekt het naar de aanwezigheid van cachebeheerkoppen en genereert het een bestand in de cachemap met dezelfde naam en een extensie .ttl
.
Hier is een voorbeeld van de eigenschap die in het dossier van de landbouwbedrijfconfiguratie wordt gevormd:
/cache {
/enableTTL "1"
Regels voor filter Cache
Hier is een voorbeeld van een basislijnconfiguratie waarvoor elementen op een uitgever in het voorgeheugen onderbrengen:
/cache{
/0000 {
/glob "*"
/type "allow"
}
/0001 {
/glob "/libs/granite/csrf/token.json"
/type "deny"
}
We willen onze gepubliceerde site zo hebzuchtig mogelijk maken en alles in de cache plaatsen.
Als er elementen zijn die de ervaring breken wanneer caching u regels kunt toevoegen om de optie te verwijderen om dat punt in het voorgeheugen onder te brengen. Zoals u in het voorbeeld hierboven ziet, mogen de csrf-tokens nooit in de cache worden geplaatst en zijn deze uitgesloten. De verdere details bij het schrijven van deze regels kunnen hier worden gevonden
Volgende -> Variabelen gebruiken en begrijpen