In cache geplaatste pagina's ongeldig maken van AEM :headding-anchor:invalidating-cached-pages-from-aem

Wanneer u Dispatcher gebruikt met AEM, moet de interactie zo worden geconfigureerd dat een effectief cachebeheer wordt gegarandeerd. Afhankelijk van uw milieu, kan de configuratie prestaties ook verhogen.

AEM gebruikersaccounts instellen :headding-anchor:setting-up-aem-user-accounts

De standaard admin gebruikersrekening wordt gebruikt om de replicatieagenten voor authentiek te verklaren die door gebrek worden geïnstalleerd. Creeer een specifieke gebruikersrekening voor gebruik met replicatieagenten.

Voor meer informatie, zie de sectie van de Gebruikers van de Replicatie en van het Vervoervan de Controlelijst van de Veiligheid van de AEM vormen.

Dispatcher Cache ongeldig maken vanuit de ontwerpomgeving :headding-anchor:invalidating-dispatcher-cache-from-the-authoring-environment

Een replicatieagent op de AEM auteurinstantie verzendt een verzoek van de geheim voorgeheugenongeldigheid naar Dispatcher wanneer een pagina wordt gepubliceerd. Dispatcher vernieuwt het bestand uiteindelijk in de cache wanneer nieuwe inhoud wordt gepubliceerd.

Gebruik de volgende procedure om een replicatieagent op de AEM auteursinstantie te vormen. De configuratie maakt het Dispatcher-cachegeheugen ongeldig na activering van de pagina:

  1. Open de console AEM Tools. (https://localhost:4502/miscadmin#/etc)

  2. Open de vereiste replicatieagent onder Hulpmiddelen/replicatie/Agenten op auteur. U kunt de Dispatcher Flush-agent gebruiken die standaard is geïnstalleerd.

  3. Klik uitgeven, en op het lusje van Montages zorgen ervoor dat Toegelaten wordt geselecteerd.

  4. (facultatief) om alias of verzoeken van de de ongeldig wordingsweg van de ijl toe te laten selecteren de optie van de Update van de Alias.

  5. Ga op het tabblad Vervoer naar Dispatcher door de URI in te voeren.

    Als u de standaardDispatcher Flush agent gebruikt, werk hostname en haven bij; bijvoorbeeld, https://<dispatcherHost>:<portApache>/dispatcher/invalidate.cache

    Nota: voor de Uitlijningsagenten van Dispatcher, wordt het bezit van URI gebruikt slechts als u op weg-gebaseerde virtuele gastheeringangen gebruikt om tussen landbouwbedrijven te onderscheiden. U gebruikt dit gebied om het landbouwbedrijf te richten om ongeldig te maken. farm #1 heeft bijvoorbeeld een virtuele host van www.mysite.com/path1/* en farm #2 heeft een virtuele host van www.mysite.com/path2/* . U kunt een URL van /path1/invalidate.cache gebruiken om het eerste landbouwbedrijf te richten en /path2/invalidate.cache om het tweede landbouwbedrijf te richten. Voor meer informatie, zie Gebruikend Dispatcher met Veelvoudige Domeinen.

  6. Configureer desgewenst andere parameters.

  7. Klik op OK om de agent te activeren.

Alternatief, kunt u tot de Vlek van Dispatcher agent van de AEM Aanraakinterfaceook toegang hebben en vormen.

Voor meer details op hoe te om toegang tot ijdelheid URLs toe te laten, zie Toelatend Toegang tot Vanity URLs.

NOTE
De agent voor het leegmaken van het geheime voorgeheugen van Dispatcher vereist geen gebruikersnaam en wachtwoord, maar als gevormd worden zij verzonden met basisauthentificatie.

Er zijn twee mogelijke problemen met deze aanpak:

  • De Dispatcher moet bereikbaar zijn vanuit de ontwerpinstantie. Als uw netwerk (bijvoorbeeld, de firewall) dusdanig wordt gevormd dat de toegang tussen twee beperkt is, kan deze situatie niet het geval zijn.

  • De openbaarmaking en de ongeldigmaking van de cache vinden tegelijkertijd plaats. Afhankelijk van de timing kan een gebruiker een pagina aanvragen vlak nadat deze uit de cache is verwijderd en vlak voordat de nieuwe pagina wordt gepubliceerd. AEM keert nu de oude pagina terug, en de Dispatcher bewaart het opnieuw. Deze situatie is eerder een probleem voor grote sites.

Dispatcher Cache van een publicatie-instantie ongeldig maken :headding-anchor:invalidating-dispatcher-cache-from-a-publishing-instance

Onder bepaalde omstandigheden kunnen de prestaties worden verbeterd door cachebeheer over te brengen van de ontwerpomgeving naar een publicatie-instantie. Het is dan de het publiceren milieu (niet het AEM auteursmilieu) die een verzoek van de geheim voorgeheugenongeldigverklaring naar Dispatcher verzendt wanneer een gepubliceerde pagina wordt ontvangen.

Deze omstandigheden omvatten:

NOTE
Een ervaren AEM beheerder zou het besluit moeten nemen om deze methode te gebruiken.

Een replicatieagent die op de publicatieinstantie werkt, bestuurt de Dispatcher flush. Nochtans, wordt de configuratie gemaakt in het auteursmilieu en dan overgebracht door de agent te activeren:

  1. Open de console AEM Tools.

  2. Open de vereiste replicatieagent onder Hulpmiddelen/replicatie/Agenten bij publiceren. U kunt de Dispatcher Flush-agent gebruiken die standaard is geïnstalleerd.

  3. Klik uitgeven, en op het lusje van Montages zorgen ervoor dat Toegelaten wordt geselecteerd.

  4. (facultatief) om alias of verzoeken van de de ongeldig wordingsweg van de ijl toe te laten selecteren de optie van de Update van de Alias.

  5. Ga op het tabblad Vervoer naar Dispatcher door de benodigde URI in te voeren.
    Als u de standaard Dispatcher Flush-agent gebruikt, werkt u de hostnaam en -poort bij, bijvoorbeeld http://<dispatcherHost>:<portApache>/dispatcher/invalidate.cache

    Nota: voor de Uitlijningsagenten van Dispatcher, wordt het bezit van URI gebruikt slechts als u op weg-gebaseerde virtuele gastheeringangen gebruikt om tussen landbouwbedrijven te onderscheiden. U gebruikt dit gebied om het landbouwbedrijf te richten om ongeldig te maken. farm #1 heeft bijvoorbeeld een virtuele host van www.mysite.com/path1/* en farm #2 heeft een virtuele host van www.mysite.com/path2/* . U kunt een URL van /path1/invalidate.cache gebruiken om het eerste landbouwbedrijf te richten en /path2/invalidate.cache om het tweede landbouwbedrijf te richten. Voor meer informatie, zie Gebruikend Dispatcher met Veelvoudige Domeinen.

  6. Configureer desgewenst andere parameters.

  7. Meld u aan bij de publicatieinstantie en valideer de configuratie van de spoelagent. Zorg er ook voor dat deze functie is ingeschakeld.

  8. Herhaal deze bewerking voor elke betrokken publicatie-instantie.

Na het vormen, wanneer u een pagina van auteur activeert om te publiceren, stelt deze agent een standaardreplicatie in werking. Het logboek bevat berichten die verzoeken aangeven die afkomstig zijn van uw publicatieserver, vergelijkbaar met het volgende voorbeeld:

  1. <publishserver> 13:29:47 127.0.0.1 POST /dispatcher/invalidate.cache 200

Dispatcher Cache handmatig ongeldig maken :headding-anchor:manually-invalidating-the-dispatcher-cache

Als u de Dispatcher-cache ongeldig wilt maken (of wilt leegmaken) zonder een pagina te activeren, kunt u een HTTP-aanvraag naar de Dispatcher verzenden. U kunt bijvoorbeeld een AEM maken waarmee beheerders of andere toepassingen de cache kunnen leegmaken.

Door de HTTP-aanvraag verwijdert de Dispatcher specifieke bestanden uit de cache. De Dispatcher vernieuwt desgewenst de cache met een nieuwe kopie.

In cache opgeslagen bestanden verwijderen :headding-anchor:delete-cached-files

Geef een HTTP- verzoek uit dat de Dispatcher veroorzaakt om dossiers van het geheime voorgeheugen te schrappen. Dispatcher plaatst de bestanden alleen opnieuw in cache wanneer het een clientverzoek voor de pagina ontvangt. Het verwijderen van cachebestanden op deze manier is geschikt voor websites die waarschijnlijk geen gelijktijdige aanvragen voor dezelfde pagina ontvangen.

De HTTP-aanvraag heeft de volgende vorm:

POST /dispatcher/invalidate.cache HTTP/1.1
CQ-Action: Activate
CQ-Handle: path-pattern
Content-Length: 0

Dispatcher verwijdert (verwijdert) de bestanden en mappen in de cache die een naam hebben die overeenkomt met de waarde van de header CQ-Handler . Een CQ-Handle van /content/geomtrixx-outdoors/en komt bijvoorbeeld overeen met de volgende items:

  • Alle bestanden (van een willekeurige bestandsextensie) met de naam en in de map geometrixx-outdoors

  • Elke map met de naam _jcr_content onder de map en (die, indien aanwezig, in de cache opgeslagen renderingen van subknooppunten van de pagina bevat)

Alle andere bestanden in de Dispatcher-cache (of tot een bepaald niveau, afhankelijk van de instelling /statfileslevel ) worden ongeldig gemaakt door op het .stat -bestand te tikken. De laatste wijzigingsdatum van dit bestand wordt vergeleken met de laatste wijzigingsdatum van een document in de cache en het document wordt opnieuw opgehaald als het .stat -bestand nieuwer is. Zie het Invalideren van Dossiers door het Niveau van de Omslagvoor details.

Ongeldige validatie (dat wil zeggen het aanraken van .stat-bestanden) kan worden voorkomen door een extra koptekst te verzenden CQ-Action-Scope: ResourceOnly . Deze functionaliteit kan worden gebruikt om bepaalde bronnen te leegmaken. Alles zonder andere delen van de cache ongeldig te maken, zoals JSON-gegevens. Deze gegevens worden dynamisch gemaakt en moeten regelmatig worden leeggemaakt, onafhankelijk van de cache. Bijvoorbeeld, die gegevens vertegenwoordigen die van een derdesysteem worden verkregen om nieuws, voorraadtikkers, etc. te tonen.

Bestanden verwijderen en opnieuw plaatsen :headding-anchor:delete-and-recache-files

Geef een HTTP-aanvraag uit die ervoor zorgt dat de Dispatcher cachebestanden verwijdert en het bestand direct ophaalt en opnieuw plaatst. U kunt bestanden verwijderen en onmiddellijk opnieuw in cache plaatsen wanneer websites waarschijnlijk gelijktijdige clientverzoeken voor dezelfde pagina ontvangen. Met Direct recaching zorgt Dispatcher ervoor dat de pagina slechts één keer wordt opgehaald en in cache wordt geplaatst in plaats van één keer voor elk van de gelijktijdige clientverzoeken.

Nota: het schrappen en het in het voorgeheugen onderbrengen van dossiers zou op de het publiceren instantie slechts moeten worden uitgevoerd. Wanneer uitgevoerd vanaf de auteurinstantie, komen de rasvoorwaarden voor wanneer pogingen om middelen terug te winnen voorkomen alvorens zij zijn gepubliceerd.

De HTTP-aanvraag heeft de volgende vorm:

POST /dispatcher/invalidate.cache HTTP/1.1
CQ-Action: Activate
`Content-Type: text/plain
CQ-Handle: path-pattern
Content-Length: numchars in bodypage_path0

page_path1
...
page_pathn

De paginapaden die onmiddellijk opnieuw in cache moeten worden geplaatst, worden weergegeven op afzonderlijke regels in de berichttekst. De waarde van CQ-Handle is het pad van een pagina die de pagina's ongeldig maakt om opnieuw te worden gemaakt. (Zie de /statfileslevel parameter van het 2} configuratiepunt van het Geheime voorgeheugen {.)In het volgende voorbeeld verwijdert en doorloopt het HTTP-aanvraagbericht /content/geometrixx-outdoors/en.html page :

POST /dispatcher/invalidate.cache HTTP/1.1
CQ-Action: Activate
Content-Type: text/plain
CQ-Handle: /content/geometrixx-outdoors/en/men.html
Content-Length: 36

/content/geometrixx-outdoors/en.html

Voorbeeld spoelservlet :headding-anchor:example-flush-servlet

De volgende code implementeert een servlet die een verzoek tot validatie naar Dispatcher verzendt. De servlet ontvangt een aanvraagbericht dat handle en page parameters bevat. Deze parameters geven respectievelijk de waarde van de header CQ-Handle en het pad van de pagina die moet worden teruggedraaid. De servlet gebruikt de waarden om de HTTP-aanvraag voor Dispatcher samen te stellen.

Wanneer servlet aan de publicatieinstantie wordt opgesteld, veroorzaakt volgende URL de Dispatcher om de /content/geometrixx-outdoors/en.html pagina te schrappen en dan een nieuw exemplaar in het voorgeheugen onder te brengen.

10.36.79.223:4503/bin/flushcache/html?page=/content/geometrixx-outdoors/en.html&handle=/content/geometrixx-outdoors/en/men.html

NOTE
Dit voorbeeldservlet is niet veilig en toont slechts het gebruik van het HTTP Post- verzoekbericht aan. Uw oplossing zou toegang tot servlet moeten beveiligen.
package com.adobe.example;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Property;

import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;

@Component(metatype=true)
@Service
public class Flushcache extends SlingSafeMethodsServlet {

 @Property(value="/bin/flushcache")
 static final String SERVLET_PATH="sling.servlet.paths";

 private Logger logger = LoggerFactory.getLogger(this.getClass());

 public void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) {
  try{
      //retrieve the request parameters
      String handle = request.getParameter("handle");
      String page = request.getParameter("page");

      //hard-coding connection properties is a bad practice, but is done here to simplify the example
      String server = "localhost";
      String uri = "/dispatcher/invalidate.cache";

      HttpClient client = new HttpClient();

      PostMethod post = new PostMethod("https://"+host+uri);
      post.setRequestHeader("CQ-Action", "Activate");
      post.setRequestHeader("CQ-Handle",handle);

      StringRequestEntity body = new StringRequestEntity(page,null,null);
      post.setRequestEntity(body);
      post.setRequestHeader("Content-length", String.valueOf(body.getContentLength()));
      client.executeMethod(post);
      post.releaseConnection();
      //log the results
      logger.info("result: " + post.getResponseBodyAsString());
      }
  }catch(Exception e){
      logger.error("Flushcache servlet exception: " + e.getMessage());
  }
 }
}
recommendation-more-help
ce382601-480f-4a99-8be7-73178d4b6ef5