Offload niet-regex omleidingen naar Fastly in plaats van Nginx (routes)

In dit onderwerp wordt een oplossing voorgesteld voor een typisch probleem met de omleiding van de prestaties dat u zou kunnen hebben wanneer u niet- regex omleidingen naar Fastly in plaats van Nginx in Adobe Commerce op cloudinfrastructuur verplaatst.

Betrokken producten en versies

  • Adobe Commerce op cloudinfrastructuur (alle versies) Master/Production/Staging -omgevingen die gebruikmaken van Fastly

Probleem

In Adobe Commerce op cloudinfrastructuur kunnen grote aantallen niet- regex omleidingen/herschrijvingen niet worden uitgevoerd op de Nginx -laag, waardoor prestatieproblemen kunnen ontstaan.

Oorzaak

Het bestand routes.yaml in de map .magento/routes.yaml definieert routes voor uw Adobe Commerce op cloudinfrastructuur.

Als de grootte van uw routes.yaml dossier 32KB of groter is, zou u uw niet regex redirects/rewrites aan Fastly moeten offloaden.

Deze Nginx laag kan een groot aantal niet - regex omleidingen/herschrijft behandelen, anders zullen de prestatieskwesties resulteren.

Oplossing

De oplossing is om die niet- regex in plaats daarvan om te leiden naar Fastly. Maak een algemeen foutpad om naar Fastly om te leiden.

In de volgende stappen wordt beschreven hoe u omleidingen kunt plaatsen op Fastly in plaats van Nginx .

  1. Maak een Edge-woordenboek.

    Eerst, kunt u VCL fragmenten in Adobe Commercegebruiken om een randwoordenboek te bepalen. Dit bevat de omleidingen.

    Enkele kanttekeningen:

    • Fastly kan regex niet toepassen op woordenboekitems. Het is maar een exacte overeenkomst. Zie de documenten van Fastly over de beperkingen van het randwoordenboekvoor meer informatie over deze beperkingen.

    • Fastly heeft een limiet van 1000 items in één woordenboek. Fastly kan deze limiet uitbreiden, maar dat leidt tot het derde voorbehoud.

    • Telkens wanneer u de items bijwerkt en dat bijgewerkte VCL naar alle knooppunten implementeert, is er een geometrische toename van de laadtijd met uitbreidende woordenboeken. Dit betekent dat een 2000-ingangswoordenboek 3x-4x langzamer wordt geladen dan een 1000-ingangswoordenboek. Maar dat is alleen van belang wanneer u VCL implementeert (het woordenboek bijwerkt of de functiecode VCL wijzigt).

      Het heeft geen invloed op de tijd die nodig is om een aanvraag te verwerken in Fastly . Het is alleen van invloed op de tijd die nodig is om een nieuwe configuratie uit te duwen in Fastly .

      Over het algemeen nemen configuratiewijzigingen gemiddeld enkele seconden in beslag, meestal niet meer dan 5-10 seconden. Zo neemt een 2x verhoging van woordenboekpunten omhoog van 30 seconden om uw config uit te krijgen. Een stijging van 4 x neemt dichter bij 2 minuten in beslag. Dit leidt tot het vierde voorbehoud.

    • Er is een vrij harde grens van 10.000 ingangen in een randwoordenboek.

    We raden u ten zeerste aan uw lijst met omleidingen te consolideren. U kunt meerdere woordenboeken gebruiken, maar houd er rekening mee dat elke update die u uitvoert naar uw VCL enkele minuten duurt voordat deze daadwerkelijk wordt gevuld in Fastly .

  2. Vergelijk de URL met de woordenboeken.

    Wanneer de URL -zoekopdracht wordt uitgevoerd, wordt de vergelijking gemaakt om de aangepaste foutcode toe te passen als er een overeenkomst wordt gevonden.

    Gebruik een ander VCL -fragment om iets als het volgende toe te voegen aan vcl_recv :

    code language-none
         declare local var.redir-path STRING;
         set var.redir-path = table.lookup(redirects, std.tolower(req.url), "");
    
         if (var.redir-path != "") {
           error 912 var.redir-path;
         }
    

    Hier controleren we of de code URL bestaat in de tabelvermelding. Als dit het geval is, wordt een interne Fastly fout aangeroepen en wordt de omleiding URL vanuit de tabel doorgegeven aan die fout.

  3. De omleiding beheren.

    Wanneer een overeenkomst wordt gevonden, wordt de actie ondernomen die voor die obj.status wordt bepaald, in dit geval een 301 permanent bewegingsomleiding.

    Gebruik een laatste fragment in vcl_error om de 301 foutcodes terug te sturen naar de client:

    code language-none
      if (obj.status == 912) {
         set obj.http.location = obj.response;
         set obj.status = 301;
         set obj.response = "Moved Permanently";
         return(deliver);
           }
    

    Met dit blok, controleren wij om te zien of zal de foutencode die van vcl_recv wordt overgegaan aanpast, en als zo, zullen wij de plaats aan het foutenbericht plaatsen dat binnen wordt overgegaan, dan de statuscode in 301 en het bericht "permanent"veranderen. Op dat punt, zou de reactie klaar moeten zijn om terug naar de cliënt te gaan.

Stage-service

WARNING
Als u al deze stappen wilt uitproberen, wordt u ten zeerste aangeraden een Adobe Commerce-testomgeving in te stellen. Op die manier kunt u tests uitvoeren met de service Fastly om ervoor te zorgen dat alles zich gedraagt zoals u zou verwachten.

Als u geen Adobe Commerce-testomgeving wilt gebruiken, maar wilt zien hoe deze omleidingen eruit zouden zien, kunt u rechtstreeks een werkgebiedaccount instellen op Fastly .

Gerelateerde lezing

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a