將非regex重新導向解除安裝到Fastly而非Nginx (路由)

此主題針對您在雲端基礎結構上的Adobe Commerce中將非regex重新導向解除安裝到Fastly而非Nginx時可能遇到的典型重新導向效能問題,提供解決方案。

受影響的產品和版本

  • 雲端基礎結構上的Adobe Commerce (所有版本) Master/Production/Staging環境利用Fastly

問題

在雲端基礎結構上的Adobe Commerce中,Nginx層無法執行大量非regex重新導向/重新寫入,因此可能會導致效能問題。

原因

.magento/routes.yaml目錄中的routes.yaml檔案定義雲端基礎結構上Adobe Commerce的路由。

如果routes.yaml檔案的大小為32KB或更大,您應該將非regex重新導向/重寫解除安裝至Fastly。

此Nginx層無法處理大量非regex重新導向/重新寫入,否則會產生效能問題。

解決方案

解決方案是將這些非regex重新導向解除安裝至Fastly。 建立一般錯誤路徑以重新導向至Fastly。

下列步驟將詳細說明如何在Fastly (而非Nginx)上放置重新導向。

  1. 建立Edge字典。

    首先,您可以使用Adobe Commerce🔗中的VCL 代碼片段來定義邊緣字典。 這將包含重新導向。

    對此有一些警告:

    • Fastly無法在字典專案上執行regex動作。 只有完全相符的專案。 如需這些限制的詳細資訊,請參閱Fastly的邊緣字典限制檔案

    • Fastly在單一字典中的限製為1000個專案。 Fastly可以擴大此限制,但會導致第三個警告。

    • 每次更新專案並將更新VCL部署到所有節點時,幾何載入時間會隨著擴充字典而增加 — 也就是說,2000專案字典的載入速度實際上會比1000專案字典慢3倍至4倍。 但只有在部署VCL (更新字典或變更VCL函式程式碼)時,才會發生此問題。

      不會影響Fastly處理請求所需的時間,只會影響Fastly推出新設定所需的時間。

      一般而言,設定變更平均需要數秒的時間,通常不超過5至10秒。 因此,字典專案增加2倍需要30秒以上才能轉出您的設定。 每增加4倍,大約需要2分鐘。 這引出了第四個警告。

    • 邊緣字典嚴格限製為10,000個專案。

    強烈建議整合您的重新導向清單。 您可以使用多個字典,但請注意,您對VCL所做的任何更新都需要幾分鐘才能實際填入Fastly。

  2. 比較URL與字典。

    當URL查詢發生時,這將進行比較以在找到相符專案時套用自訂錯誤代碼。

    使用另一個VCL程式碼片段將類似下列的專案新增到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;
         }
    

    在此,我們正在檢查表格專案中是否存在URL。 如果是,我們會呼叫內部Fastly錯誤,並從資料表傳遞重新導向URL至該錯誤。

  3. 管理重新導向。

    找到相符專案時,會採取為該obj.status定義的動作,在此案例中為301永久移動重新導向。

    vcl_error中使用最終程式碼片段,將301個錯誤碼傳送回使用者端:

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

    透過此區塊,我們正在檢查從vcl_recv傳入的錯誤碼是否相符,若相符,我們會將位置設定為傳入的錯誤訊息,然後將狀態碼變更為301,並將訊息變更為「已永久移動」。 此時,回應應該已準備好返回使用者端。

中繼服務

WARNING
如果您想嘗試上述所有步驟,強烈建議您設定Adobe Commerce中繼環境。 如此一來,您可以針對Fastly服務執行測試,以確定所有專案皆如您預期般運作。

如果您不想執行Adobe Commerce中繼環境,但想檢視這些重新導向的外觀,您可以直接在Fastly上設定中繼帳戶。

相關閱讀

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