Avlastning av icke-regex omdirigeras till Fastly i stället för Nginx (vägar)

Det här avsnittet föreslår en lösning på ett typiskt prestandaproblem som kan uppstå när du avlastar icke-regex omdirigerar till Fastly i stället för Nginx i Adobe Commerce om molninfrastruktur.

Berörda produkter och versioner

  • Adobe Commerce i molninfrastruktur (alla versioner) Master/Production/Staging-miljöer som utnyttjar Fastly

Problem

I Adobe Commerce i molninfrastruktur kan ett stort antal omdirigeringar/omskrivningar som inte är regex inte utföras i Nginx -lagret, vilket kan orsaka prestandaproblem.

Orsak

Filen routes.yaml i katalogen .magento/routes.yaml definierar vägar för din Adobe Commerce i molninfrastruktur.

Om storleken på din routes.yaml-fil är 32 kB eller större bör du avlasta icke-regex omdirigeringar/omskrivningar till Fastly.

Det här Nginx-lagret kan inte hantera ett stort antal omdirigeringar/omskrivningar som inte är regex, annars kan prestandaproblem uppstå.

Lösning

Lösningen är att avlasta de icke-regex omdirigeringarna till Fastly i stället. Skapa en allmän felsökväg att omdirigera till Fastly.

I följande steg beskrivs hur du placerar omdirigeringar på Fastly i stället för Nginx.

  1. Skapa en Edge-ordlista.

    Först kan du använda VCL kodfragment i Adobe Commerce för att definiera en kantordlista. Detta kommer att innehålla omdirigeringarna.

    Några kavaater till detta:

    • Fastly kan inte göra regex för ordlisteposter. Det är bara en exakt träff. Mer information om de här begränsningarna finns i Fastlys dokument om begränsningar för kantordlistor.

    • Fastly har en gräns på 1 000 poster i en enda ordlista. Fastly kan utöka den här gränsen, men det leder till den tredje grottan.

    • Varje gång du uppdaterar posterna och distribuerar de uppdaterade VCL till alla noder ökar den geometriska inläsningstiden med expanderande ordlistor, vilket innebär att en 2 000-postordlista läses in 3x-4x långsammare än en 1 000-postordlista. Men det är bara ett problem när du distribuerar VCL (uppdaterar ordlistan eller ändrar VCL-funktionskoden).

      Det påverkar inte den tid det tar Fastly att behandla en begäran. Det påverkar bara hur lång tid det tar Fastly att distribuera en ny konfiguration.

      I allmänhet tar konfigurationsändringar några sekunder i genomsnitt, vanligtvis inte mer än 5-10 sekunder. Så en tvåfaldig ökning av ordlisteobjekt tar upp till 30 sekunder att få igång konfigurationen. En ökning med fyra gånger skulle ta närmare 2 minuter. Detta leder till den fjärde grottan.

    • Det finns en ganska hård gräns på 10 000 poster i en kantordlista.

    Vi rekommenderar starkt att du konsoliderar din omdirigeringslista. Du kan använda flera ordlistor, men tänk bara på att det tar flera minuter att fylla i alla uppdateringar du gör i VCL i Fastly.

  2. Jämför URL med ordlistan/ordlistorna.

    När URL-sökningen inträffar görs jämförelsen för att tillämpa den anpassade felkoden om en matchning hittas.

    Använd ett annat VCL-fragment för att lägga till något som följande i 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;
         }
    

    Här kontrollerar vi om URL finns i tabellposten. Om det gör det anropar vi ett internt Fastly-fel och skickar omdirigeringen URL från tabellen till det felet.

  3. Hantera omdirigeringen.

    När en matchning hittas utförs åtgärden som är definierad för obj.status, i det här fallet en permanent flyttomdirigering om 301.

    Använd ett sista utdrag i vcl_error för att skicka tillbaka 301-felkoder till klienten:

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

    Med det här blocket kontrollerar vi om felkoden som skickas från vcl_recv matchar, och i så fall anger vi platsen till det felmeddelande som skickas, ändrar statuskoden till 301 och meddelandet till"Flyttad permanent". Då bör svaret vara klart att skickas tillbaka till klienten.

Stage Service

WARNING
Om du vill prova alla dessa steg bör du konfigurera en mellanlagringsmiljö för Adobe Commerce. På så sätt kan du köra tester mot tjänsten Fastly för att se till att allt fungerar som du tänkt dig.

Om du inte vill köra en mellanlagringsmiljö från Adobe Commerce, men vill se hur dessa omdirigeringar skulle se ut, kan du konfigurera ett mellanlagringskonto direkt på Fastly.

Relaterad läsning

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