#AEM

Hoe schakelt u de AEM Dispatcher Cache in?

Inhoud

Caching is een belangrijke prestatiefactor en een bron van problemen wanneer het niet correct is ingesteld. Dit artikel geeft een overzicht en nuttige, praktische details over hoe caching aan te passen voor een lokale ontwikkelomgeving en waar de gecachte bestanden worden opgeslagen.

Dus wat is cache in AEM, en hoe werkt het?

Cache in AEM is een component die transparant gegevens opslaat, zodat toekomstige verzoeken om die gegevens sneller kunnen worden afgehandeld. Zodra een cachebaar document wordt aangevraagd, wordt het door de Dispatcher gecontroleerd om te identificeren of dat document bestaat in het bestandssysteem van de webserver:

  • Als het document is gecachet, retourneert de Dispatcher het bestand.
  • De Dispatcher vraagt het document aan bij de AEM-instantie als het niet is gecachet.

Standaard worden bronnen alleen gecachet als aan alle volgende voorwaarden is voldaan:

  • Het HTTP-verzoek maakt gebruik van de GET-methode;
  • De aangevraagde URL heeft een extensie (zoals .html of .xml);
  • De aangevraagde URL heeft geen query string (er zijn geen parameters na de extensie);
  • Het verzoek heeft geen ‘Authorization’-header (tenzij AllowAuthorized 1 is).

De instellingen zijn gedefinieerd in het configuratiebestand van de dispatcher. In ons geval is dit een conf/dispatcher.any-bestand. Het configuratiebestand bevat een reeks enkel- of meervoudige eigenschappen die het gedrag van de dispatcher bepalen:

  • eigenschapsnamen worden voorafgegaan door een forward slash (‘/’);
  • meervoudige eigenschappen omsluiten onderliggende items met accolades (‘{}’);
  • commentaar begint met het ‘#’-symbool.

Renders

Eerst moet u renders specificeren voor de dispatcher. Renders zijn AEM-instanties waarvan de dispatcher de inhoud ontvangt, en die gecachet kunnen worden. Renders is het eerste wat we zullen definiëren in ons configuratiebestand. De Dispatcher zal automatisch de belasting verdelen over deze AEM-instanties als u meer dan één render definieert. In ons geval zullen we slechts één render instellen: een publieke AEM-instantie.

    /renders
      {
      /rend01
        {
        /hostname "localhost"
        /port "4503"
        }
      }

U kunt nu de httpd server herstarten en controleren of de dispatcher bronnen kan opvragen van een publieke AEM-instantie.

Als u bijvoorbeeld een werkende http://localhost:4503/content/geometrixx/en.html pagina heeft, dan zou de dispatcherversie van deze pagina beschikbaar moeten zijn op http://localhost/content/geometrixx/en.html. Merk op dat we de poort niet instellen in het URL-verzoek omdat de dispatcher (meer precies, httpd) werkt op poort 80, wat de standaard is voor alle browsers.

Filters

De /filter sectie specificeert HTTP-verzoeken die de dispatcher kan accepteren. Alle andere verzoeken worden teruggestuurd naar de webserver met een 404-foutcode (pagina niet gevonden). Laten we toegang tot alle bronnen toestaan voor ons demonstratiegeval.

    /filter
      {
      /0001 { /type "allow" /glob "*" }
      }

Filtertypen: “allow” of “deny”.

Globs worden vergeleken met de gehele verzoekregel, bijv.:

/0001 { /type "allow" /glob "* /index.html *" }

Deze glob komt overeen met het verzoek “GET /index.html HTTP/1.1” maar niet met “GET /index.html?a=b HTTP/1.1”.

In plaats van “globs”, kunt u afzonderlijke “url”, “method”, “protocol”, “extension” gebruiken om uw filter te definiëren. Naast “url”, kunt u “path”, “selectors”, “extension”, “suffix” gebruiken.

Wanneer een verzoek voldoet aan meerdere filterpatronen, wordt alleen het laatste filterpatroon toegepast.

Nadat u uw filters heeft gedefinieerd, kunt u httpd herstarten en controleren of de dispatcher toegang heeft tot alle bronnen van de publieke AEM-instantie. Uiteraard moet u om veiligheidsredenen de toegang tot sommige bronnen in een echte productieomgeving weigeren.

Cache

De cachingsectie bepaalt welke bronnen de dispatcher zal cachen. Deze sectie heeft veel regels die vergelijkbaar zijn met de filterregels, met enkele aanvullende instellingen.

Bijvoorbeeld, /docroot bepaalt de locatie van de directory waar gecachete bestanden worden opgeslagen. De waarde moet exact hetzelfde pad zijn als de documentroot van de webserver, zodat de dispatcher en de webserver dezelfde bestanden kunnen verwerken.

Voor onze demonstratie, laten we docroot instellen en het cachen van alle resources ontvangen van onze render (publish instance) toestaan:

    /cache
      {
      /docroot "/Apache22/htdocs"
      /rules
        {
        /0000
          {
          /glob "*"
          /type "allow"
          }
        }
      }

Zodra u deze wijzigingen heeft toegepast, kunt u de HTTPd server herstarten, een nieuw privé-browservenster openen voor ongeautoriseerde toegang zonder de “Authorization”-header te gebruiken (Chrome ctrl+shift+n, Firefox ctrl+shift+p) en naar: http://localhost/content/geometrixx/en/products.html gaan.

Gecachete resources zouden moeten verschijnen in de htdocs-directory. Resources hebben een URL-achtige hiërarchie: directories vormen paden, en statische HTML-bestanden bevatten gerenderde inhoud.

Headers

U weet dat gecachete HTML-bestanden alleen HTML-inhoud bevatten. Maar wat moeten we doen als we response headers ontvangen van renders willen cachen?

Als reacties van renders bijvoorbeeld een “Content-Type” header bevatten die de codering definieert, dan wordt de HTML-inhoud mogelijk niet correct weergegeven zonder die header. Dat is waarvoor het /headers blok binnen /cache secties is ontworpen. Laten we enkele veelvoorkomende en nuttige headers cachen:

/cache
{
      /headers
        {
        "Cache-Control"
        "Content-Disposition"
        "Content-Type"
        "Expires"
        "Last-Modified"
        "X-Content-Type-Options"
        }
}

Nadat u de headers in uw dispatcher-configuratiebestand heeft gewijzigd, verwijdert u alle cache uit de htdocs directory en herstart u httpd. Daarna kunt u http://localhost/content/geometrixx/en/products.html openen.

Tot slot, vindt u niet alleen het gecachete HTML-bestand products.html in de htdocs/content/geometrixx/en directory, maar ook het bestand products.html.h naast het originele HTML-bestand products.html. Dit *.h-bestand bevat headers voor het gecachete HTML-bestand.

Samenvatting

U kunt snel caching activeren met behulp van de volgende initiële instellingen in het dispatcher-configuratiebestand:

  • stel renders in;
  • stel filters in;
  • stel htdocs in en regels voor cachingsecties;
  • stel headers in voor het opslaan van HTTP-headers.

FAQ

Hoe werkt de AEM dispatcher-cache?

Nadat een cachebaar document is aangevraagd, wordt het door de Dispatcher gecontroleerd om te identificeren of dat document bestaat in het bestandssysteem van de webserver:

Als het document in de cache is opgeslagen, retourneert de Dispatcher het bestand. De Dispatcher vraagt het document op van de AEM-instantie als het niet in de cache is opgeslagen.

Wat is cache in AEM?

Cache in AEM is een component die transparant gegevens opslaat, zodat toekomstige verzoeken om die gegevens sneller kunnen worden afgehandeld.

Wat is permissiegevoelige caching in AEM?

Permissiegevoelige cache in AEM stelt u in staat beveiligde pagina’s in de cache op te slaan. De Dispatcher controleert de toegangsrechten van de gebruiker voor een pagina voordat de gecachete pagina wordt geleverd.

    Laten we je project eens bespreken!
    / 2
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Vink het vakje aan
    Geslaagd!
    We will contact you by email