Hoe kan de Dispatcher-cache worden geoptimaliseerd?
Dit artikel bevat gedetailleerde instructies over de verschillende manieren om de verzendingscache te optimaliseren. Het beschrijft verder de stappen om de stijlinvalidaties van TTL ("Tijd aan Levende"of het verlopen) toe te laten, het onbruikbaar maken van verzend agenten, het terughalen van verzend verzend verzonk, onder andere.
Beschrijving description
Omgeving
Adobe Experience Manager
Problemen/symptomen
Dit artikel richt zich op de nieuwste optimalisaties in de AEM dispatcher en op de manier waarop u deze optimaal kunt benutten. De AEM dispatcher is een caching reverse, proxy server ontworpen voor gebruik met Adobe Experience Manager. Het kan als een module binnen een bestaande software van de Webserver worden geïnstalleerd en worden uitgevoerd. Op het moment dat u dit artikel schrijft, wordt dispatchermodule wordt ondersteund op Apache HTTP Server, Microsoft IIS en iPlanet.
Resolutie resolution
Hoe werkt het in cache plaatsen van Dispatcher?
Op het eenvoudigste niveau is de AEM dispatcher een reverse-proxy die werkt door caching, leegmaken van cache en het ongeldig maken van cache uit te voeren.
Zie de verwante koppelingen voor meer informatie over dispatcher:
- Hoe de verzender werkt en hoe deze wordt geïnstalleerd.
- Configuratieopties beschikbaar in de dispatcher.
- Webinar over de werking van de verzender - sommige informatie in de presentatie is gebaseerd op oude versies van de verzender.
- Gems-webinar-sessie over functies voor het verzenden, gebruik en beveiliging van CDN.
- Gems-sessie over nieuwere functies in dispatcher (na v4.1.9).
De Dispatcher-cache optimaliseren
Hier volgen enkele manieren om de verzendingscache te optimaliseren:
-
Bijna alles in cache plaatsen - Dit betekent dat inhoud die meerdere keren door gebruikers wordt opgevraagd, in het cachegeheugen wordt opgeslagen.
-
Persoonlijke inhoud voor verschillende tijdsperioden in de cache opslaan - Als uw site persoonlijke inhoud bevat, kunt u het beste Apache Sling Dynamic Includes in uw AEM toepassing aan hefboomwerking Ajax (Asynchrone vraag JavaScript en XML op browser niveau), SSI (de Zijde van de Server omvat op het niveau van de Server van het Web), en ESI (Edge-side omvat op het niveau CDN) om verschillende delen van de pagina voor verschillende periodes in het voorgeheugen onder te brengen.
-
De verzendingscache nooit verwijderen op een live dispatcher - Als een verzender live-inhoud verzorgt en u de cache verwijdert, zal dit leiden tot een enorme stroom verzoeken om terug te gaan naar AEM. Hierdoor mag de verzendingscache nooit worden verwijderd op een live verzender.
-
Cache opknappen - Voordat u de verzendingscache verwijdert, haalt u de verzender van het taakverdelingsmechanisme af, verwijdert u de cache en voert u vervolgens een webcrawler-gereedschap uit om bestanden in de cache op de verzender te plaatsen voordat u het taakverdelingsmechanisme activeert.
-
Cachefoutpagina's - Gebruik de DispatcherPassError 1 (Specifieke Apache Web Server) instructie om foutpagina's te bedienen, zoals 404s van de verzendercache.
-
GZip comprimeert alle bestandstypen behalve die welke vooraf zijn gecomprimeerd - in Apache Web Server, mod_deflate kan worden gebruikt, maar zorg ervoor dat Variëren: gebruikersagent header is niet ingesteld. In Microsoft IIS: gebruiken Dynamische compressie.
Voorbeeld van een Apache-configuratie (waarbij alleen bepaalde inhoudstypen worden opgegeven om vooraf gecomprimeerde bestandstypen te voorkomen):
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
-
Inschakelen /serveStaleOnError in de /cache configuratie - Geef het oude cachebestand weer wanneer AEM instanties fouten verzenden.
-
Toevoegen /nl/respijtperiode aan de /cache configuratie - Definieer het aantal seconden dat een niet-gevalideerde, niet-gevalideerde resource mogelijk nog steeds uit de cache wordt geladen nadat de laatste publicatiegebeurtenis voor inhoud is uitgevoerd ("activatie"). Hierdoor wordt het aantal aanvragen verminderd dat teruggaat naar de publicatie-instanties tijdens een grote publicatiebewerking voor inhoud, zoals een structuuractivering.
-
Regels toevoegen aan /ignoreUrlParams - Negeer querystring-parameters die niet vereist of gebruikt worden door de toepassing. Dit staat caching van URLs toe zelfs wanneer een querystring aanwezig is.
-
Plaats de antwoordheaders voor Cache-Control en Last-Modified (Laatst gewijzigd) in de cache - Gebruik de /headers configuratie om de HTTP-antwoordheaders in cache te plaatsen Cachebeheer en Laatst gewijzigd (en/of ETag koptekst als uw gegevens vanuit AEM worden verzonden). Dit helpt bij het vereenvoudigen en optimaliseren van caching op CDN- en browserniveau. In cache plaatsen van deze headers zorgt dat alleen AEM de kopteksten worden ingesteld, niet de webserver zelf. Wanneer u dit doet, moet u beginnen met het verzenden van de headers vanuit de AEM toepassing.
-
Inhoud zo lang mogelijk in cache plaatsen en vermindert verzoeken terug naar AEM - Optimaliseer verzoeken om uitspoelen door het opnieuw uitspoelen in te schakelen op alle uitspoelmiddelen. Zie de onderste sectie getiteld Dispatcher Flush opnieuw ophalen. of gebruiken /enableTTL en instellen Cache-control: max-age=… om bestanden zo lang mogelijk in het cachegeheugen op te slaan. Zie onder voor meer informatie over dit onderwerp.
Het gebruiken van TTLs
Vanaf Dispatcher versie 4.1.11, /enableTTL 1 kan in .any dossierconfiguratie worden geplaatst. Met deze instelling respecteert de verzender de cachevervaldatums die zijn ingesteld in de responsheader HTTP Cache-Control. Met andere woorden, de verzender werkt ongeveer op dezelfde manier als een CDN, waar de primaire vorm van cachevervalsing optreedt wanneer bestanden verlopen. Zodra u dit implementeert en begint met verzenden Cache-control: max-age=… voor alle reacties van AEM, dan kunt u veilig uw verzender afvlakkingsagenten in publiceren instanties onbruikbaar maken.
Na het onbruikbaar maken van spoelagenten op de publiceer instanties dan kunt u nog het berichtchergeheime voorgeheugen willen kunnen leegmaken. In dat geval kunt u ACS-komma's - Dispatcher Flush UI. Dit gereedschap is geïnstalleerd op de auteurinstantie. Het geeft gebruikers een UI waar zij manueel geheim voorgeheugenspoelverzoeken kunnen uitvoeren.
I. De stappen om de stijlongeldig te maken van TTL ("Tijd aan Levende" of het verlopen):
- Broncode in de AEM-toepassing wijzigen om te verzenden Cachebeheer en Laatst gewijzigd voor alle aanvragen waarvoor dit nog niet is ingesteld.
- Installeer Dispatcher 4.1.11 of hoger.
- Set /enableTTL 1 in .any landbouwbedrijfconfiguratie van de plaats.
- Stel de /headers configuratie om de Cachebeheer en Laatst gewijzigd kopteksten.
- Start de webserver opnieuw.
II. Schakel dispatcher flush agents uit op de publicatie-instanties:
De verzender gebruikt nu de header Cache-Control om de invalidatie van de cachebestanden te beheren. Aangezien dat het geval is, is het niet langer nodig om de verzender uit de publicatie-instanties te spoelen.
- Ga naar /etc/replication/agents.publish.html voor elke publicatie-instantie.
- Ga naar de configuratie van elke spoelagent en maak de agent onbruikbaar.
III. Handmatige verzoeken van de auteur om het verzenden van het bestand toestaan:
Nu de spoelmiddelen worden uitgeschakeld, bent u volledig afhankelijk van de Cachebeheer om te bepalen wanneer de inhoud op de verzender wordt vernieuwd. U kunt gebruikers nog steeds toestaan handmatige flushes van de verzenderscache uit te geven:
- Installeren ACS-komma's - Dispatcher Flush UI op de auteurinstantie.
- Vorm spoelagenten op de auteursinstantie.
- In elk van de agentenconfiguraties, reeks Triggers =
>
Standaardwaarde negeren in te schakelen. Met deze optie worden de uitlijningsmiddelen genegeerd wanneer de gebruiker op (Niet bekend) of (De)Activeren in de AEM UI.
Dispatcher Flush opnieuw ophalen
Om de verzoeken van de de flush van de verzender te optimaliseren, zouden alle verzender agenten een eigenschap moeten hebben die het opnieuw plaatsen van blos wordt toegelaten.
Voer de volgende handelingen uit om het leegmaken van de terughaaldispatcher in te schakelen:
-
Ga naar http://aemhost:port/crx/packmgr/index.jsp en aanmelden als beheerder.
-
Download het pakket van hier.
-
Upload en installeer het pakket naar pakketbeheer.
-
Ga naar de configuratie van de verzendingsagent. Bijvoorbeeld /etc/replication/agents.author/flush.html
-
Klikken Bewerken
-
Het volgende instellen
- Type serienummering = Dispatcher Flush opnieuw ophalen
- Uitgebreid =
>
HTTP-methode = POST
-
Klikken Opslaan
Opmerking: het hierboven geïnstalleerde pakket is slechts een eenvoudig voorbeeld. Als u het leegmaken wilt aanpassen en optimaliseren, kunt u de lijst met URI's wijzigen die door het verwijderen worden verzonden. De code is een open bron en kan worden gevonden hier. De code voegt een lijst van URIs aan het verzoeklichaam als parameters toe die verzender vertellen welke wegen om opnieuw te halen. U kunt meer paden toevoegen volgens de vereisten van uw toepassing om de caching-mogelijkheden van uw site te optimaliseren.
Gedetailleerde uitleg van het opnieuw ophalen van de flush
Een verzender wordt normaal gesproken leeggemaakt door bestanden te verwijderen:
- Touch.stat-bestand(en)
- Verwijder /content/foo.*
- /content/foo/_jcr_content verwijderen
Vanwege het feit dat bestanden in stap 2 worden verwijderd, wordt de volgende keer dat een gebruiker een bestand zoals /content/foo.html of /content/foo.json aanvraagt, terwijl het bestand wordt "opnieuw opgehaald", de volgende aanvragen voor hetzelfde bestand ook naar de publicatie-instanties verzonden totdat het bestand in de cache wordt geplaatst. Voor trage reacties of zware verkeerspagina's zoals homepages kan dit overstromingen van de publicatiereeks veroorzaken.
Om dit probleem op te lossen, laat een eigenschap van de verzender toe genoemd herophaalden. Met deze functie kunt u een lijst met URI's verzenden die de verzender proactief "opnieuw ophaalt" en in plaats daarvan verwijdert.
Zie 22:41-27:05 presentatieopname voor een demo van hoe het werkt en hoe te om het te vormen.