将非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 代码片段来定义Edge词典。 这将包含重定向。

    对此有一些注意事项:

    • Fastly无法在字典条目上执行regex操作。 只是一模一样的。 有关这些限制的更多信息,请参阅Fastly的边缘词典限制文档

    • Fastly在单个词典中的限制为1000个条目。 Fastly可以扩大此限制,但这会导致第三个注意事项。

    • 每当您更新条目并将更新VCL的条目部署到所有节点时,几何加载时间会随着词典的扩展而增加 — 这意味着,一个2000条条目的词典实际加载速度将比一个1000条目的词典慢3到4倍。 但只有在部署VCL(更新字典或更改VCL函数代码)时才会出现问题。

      它不影响Fastly处理请求所需的时间;它只影响Fastly推出新配置所需的时间。

      一般而言,配置更改平均需要几秒钟时间,通常不超过5-10秒。 因此,词典项目增加2倍需要30秒以上才能转出配置。 4倍的增长需要接近2分钟的时间。 这引出了第四个注意事项。

    • 边缘词典的词条数量严格限制为1万条。

    强烈建议整合您的重定向列表。 您可以使用多个字典,但请注意,您对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