Hur optimerar man Dispatcher-cachen?

I den här artikeln finns detaljerade anvisningar om de olika sätten att optimera Dispatcher-cachen. Här beskrivs vidare stegen för att aktivera invalidationer av TTL-format ("Time to Live" eller utgångsdatum), inaktivera Dispatcher flush-agenter och återhämta Dispatcher flush, bland annat.

Beskrivning description

Miljö

Adobe Experience Manager

Problem/symtom

Den här artikeln fokuserar på de senaste optimeringarna i AEM Dispatcher och hur du bäst utnyttjar dem. AEM Dispatcher är en omvänd proxyserver som är avsedd att användas med Adobe Experience Manager. Den kan installeras och köras som en modul i ett befintligt webbserverprogram. När den här artikeln skrivs stöds Dispatcher-modulen på Apache HTTP Server, Microsoft IIS och iPlanet.

Upplösning resolution

Hur fungerar cachelagring i Dispatcher?

På den mest grundläggande nivån är AEM dispatcher en omvänd proxy som fungerar genom att utföra cachelagring, tömning av cache och cacheogiltigförklaring.

Mer information om Dispatcher finns på länkarna:

Optimerar Dispatcher-cachen

Här är några sätt att optimera Dispatcher-cachen:

  1. Cachelagra nästan allt - Det innebär att allt innehåll som användarna skulle begära mer än en gång cachelagras.

  2. Cachelagra anpassat innehåll för olika tidsperioder - Om din webbplats har anpassat innehåll kan du använda Apache Sling Dynamic Includes i ditt AEM program för att utnyttja Ajax (asynkrona JavaScript- och XML-anrop på webbläsarnivå), SSI (Server Side Includes på webbservernivå) och ESI (Edge-side Includes på CDN-nivå) för att cachelagra olika delar sida för olika tidsperioder.

  3. Ta aldrig bort Dispatcher-cachen på en live-Dispatcher - Om en Dispatcher skickar direktsänt innehåll och du tar bort cachen, leder det till en massmängd förfrågningar som skickas tillbaka till AEM.  På grund av detta bör Dispatcher-cachen aldrig tas bort på en aktiv Dispatcher.

  4. Använd cacheminnet - Innan du tar bort cacheminnet för Dispatcher drar du ut Dispatcher från belastningsutjämnaren, tar bort cacheminnet och kör sedan ett webcrawlningsverktyg för att cachelagra filer på Dispatcher innan du placerar det i belastningsutjämnaren.

  5. Cachelagra felsidor - Utnyttja direktivet DispatcherPassError 1 (specifikt för Apache-webbservern) för att hantera felsidor som 404s från Dispatcher-cachen.

  6. GZip komprimerar alla filtyper utom de som är förkomprimerade - I Apache-webbservern kan mod_deflate användas, men se till att Variera: User-Agent header inte är inställd.  Använd Dynamisk komprimering i Microsoft IIS.

    Exempel på konfiguration av Apache (ange endast vissa innehållstyper för att undvika förkomprimerade filtyper):

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript

  7. Aktivera /serverStaleOnError i /cache-konfigurationen - Servera den gamla cachefilen när AEM instanser hanterar fel.

  8. Lägg till /GracePeriod i /cache-konfigurationen - Ange hur många sekunder en inaktuell, automatiskt ogiltigförklarad resurs fortfarande kan hanteras från cachen efter den senaste publiceringshändelsen ("aktivering").  Detta minskar antalet begäranden som går tillbaka till publiceringsinstanser under en stor publiceringsaktivitet, till exempel"Trädaktivering".

  9. Lägg till regler i /ignoreUrlParams - Ignorera frågesträngsparametrar som inte är obligatoriska eller som används av programmet.  Detta tillåter cachelagring av URL:er även när en frågesträng finns.

  10. Cachelagra svarshuvuden för Cache-Control och Senaste ändring - Använd konfigurationen /headers för att cachelagra HTTP-svarshuvuden Cache-Control och Last-Modified (och/eller rubriken ETag om du skickar den från AEM).  Detta underlättar när det gäller att förenkla och optimera cachning på CDN- och webbläsarnivå.  Cachelagring av dessa rubriker gör att bara AEM anger rubrikerna, inte själva webbservern.  Observera att när du gör detta måste du börja skicka sidhuvuden från AEM program.

  11. Cachelagra innehåll så länge som möjligt och reducera begäranden som går tillbaka till AEM - Optimera tömningsbegäranden genom att aktivera uppdatering av tömningsagenter. Se avsnittet Återhämta Dispatcher Flush nedan. Du kan också använda /enableTTL och ange Cache-Control: max-age=… för att cachelagra filer så länge som möjligt.  Mer information om det här ämnet finns i nedan.

Använder TTL:er

Från och med Dispatcher version 4.1.11 kan /enableTTL 1 anges i alla filkonfigurationer.  Den här inställningen gör att förfallotider för Dispatcher-cache anges i svarshuvudet för HTTP Cache-Control.  Dispatcher fungerar med andra ord på ungefär samma sätt som ett CDN, där den primära formen av cachedvalidering inträffar när filerna förfaller.  När du har implementerat detta och börjat skicka Cache-Control: max-age=…   för alla svar från AEM kan du inaktivera dina Dispatcher-push-agenter på ett säkert sätt i publiceringsinstanserna.

När du har inaktiverat rensningsagenter i publiceringsinstanserna kanske du ändå vill kunna tömma Dispatcher-cachen.  I så fall kan du använda ACS Commons - Dispatcher Flush UI.  Det här verktyget installeras på författarinstansen.  Det ger användarna ett användargränssnitt där de kan utföra manuella cachetömningsbegäranden.

I. Steg för att aktivera ogiltiga TTL-format ("Time to Live" eller utgångsdatum):

  1. Ändra källkoden i AEM program för att skicka Cache-Control header och Last-Modified för alla begäranden där den inte redan har angetts.
  2. Installera Dispatcher 4.1.11 eller senare.
  3. Ange /enableTTL 1 i servergruppskonfigurationen för platsen.
  4. Ställ in konfigurationen /headers så att rubrikerna Cache-Control och Last-Modified cachelagras.
  5. Starta om webbservern.

II. Inaktivera Dispatcher-rensningsagenter på publiceringsinstanserna:

Dispatcher kommer nu att använda rubriken Cache-Control för att kontrollera ogiltigförklaringen av cachefilerna.  Eftersom så är fallet behövs inte längre Dispatcher tömning från publiceringsinstanserna.

  1. Gå till /etc/replication/agents.publish.html för varje publiceringsinstans.
  2. Gå till varje rensningsagentkonfiguration och inaktivera agenten.

III. Tillåt manuella Dispatcher-rensningsbegäranden från författarinstansen:

Nu när rensningsagenter är inaktiverade använder du bara rubriken Cache-Control för att styra när innehåll uppdateras i dispatchern.  Du kan fortfarande tillåta användare att göra manuella tömningar av Dispatcher-cachen:

  1. Installera ACS Commons - Dispatcher Flush UI på författarinstansen.
  2. Konfigurera rensningsagenter på författarinstansen.
  3. Ange Utlösare => i varje agentkonfiguration   Ignorera standardalternativet för att aktiveras. Det här alternativet gör att rensningsagenterna ignoreras när användare klickar på (Un)Publish eller (De)Activate i AEM.

Återhämtar Dispatcher Flush

För att optimera begäran om Dispatcher-tömning bör alla Dispatcher-agenter ha en funktion som kallas att uppdatera tömning aktiverad.

Så här aktiverar du omhämtning av dispatcherns tömning:

  1. Gå till http://aemhost:port/crx/packmgr/index.jsp och logga in som administratör.

  2. Hämta paketet från här.

  3. Överför och installera paketet till pakethanteraren.

  4. Gå till din konfiguration för Dispatcher flush Agent. Till exempel /etc/replication/agents.author/flush.html

  5. Klicka på Redigera

  6. Ange följande

    • Serialiseringstyp = Hämta Dispatcher Flush igen
    • Utökat =>   HTTP-metod = POST
  7. Klicka på Spara

Obs! Paketet ovan är bara ett grundläggande exempel.  Om du vill anpassa och optimera omhämtning kan du ändra listan med URI:er som skickas.  Koden är öppen källkod och kan hittas här.  Koden lägger till en lista med URI:er i begärandetexten som parametrar som talar om för Dispatcher vilka sökvägar som ska hämtas igen.  Du kan lägga till fler sökvägar enligt dina programkrav för att optimera webbplatsens cachningsfunktioner.

Detaljerad förklaring om borttagning av rensning

Normalt fungerar en Dispatcher-tömning genom att filer tas bort:

  1. Peka på .stat-fil(er)
  2. Ta bort /content/foo.*
  3. Ta bort /content/foo/_jcr_content

På grund av att filer tas bort i steg 2 kommer efterföljande förfrågningar om samma fil att skickas till publiceringsinstanserna nästa gång en användare begär en fil som /content/foo.html eller /content/foo.json, medan filen"hämtas igen".  För långsamma svar eller sidor med stor trafik, till exempel hemsidor, kan detta orsaka att publiceringsinstansnivån flödar.

Åtgärda problemet genom att aktivera en funktion i Dispatcher som kallas omhämtning.  Med den här funktionen kan du skicka en lista över URI:er som Dispatcher proaktivt ska"hämta om" och ersätta i stället för att ta bort.

Se 22:41-27:05 i den här presentationsinspelningen för en demonstration av hur det fungerar och hur du konfigurerar det.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f