将请求标准化
了解如何在 AEM as a Cloud Service 中通过流量过滤规则将请求转换为标准化请求。
为何以及何时应转换请求
当您希望将传入的流量规范化,并减少由无关查询参数或请求头引起的不必要变量时,转换请求的做法会非常有用。此方法常用于以下目的:
- 通过移除对 AEM 应用程序无关的“缓存破坏”参数,提高缓存效率。
- 通过减少请求变体并避免不必要的处理,保护源端免受滥用。
- 在将请求转发至 AEM 之前,对其进行清理或简化。
这些转换通常在 CDN 层应用,尤其适用于处理公共流量的 AEM 发布层。
先决条件
在继续操作之前,请先确保您已完成如何设置流量过滤器与 WAF 规则教程中所述的必要配置。此外,请确保您已克隆 AEM WKND Sites 项目并已将其部署至您的 AEM 环境。
示例:清除应用程序不需要的查询参数
在此示例中您将配置一条规则,移除 search 和 campaignId 之外的所有查询参数,以减少缓存碎片化。
- 将以下规则添加到 WKND 项目的
/config/cdn.yaml文件中。
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev", "stage", "prod"]
data:
requestTransformations:
rules:
# Unset all query parameters except those needed for search and campaignId
- name: unset-all-query-params-except-those-needed
when:
reqProperty: tier
in: ["publish"]
actions:
- type: unset
queryParamMatch: ^(?!search$|campaignId$).*$
-
将更改内容提交并推送到 Cloud Manager Git 存储库。
-
使用先前创建的 Cloud Manager 配置管道,将更改内容部署至 AEM 环境。
-
通过访问 WKND 站点的页面(例如
https://publish-pXXXX-eYYYY.adobeaemcloud.com/us/en.html?search=foo&campaignId=bar&otherParam=baz)来测试该规则。 -
在 AEM 日志(
aemrequest.log)中,您应能看到请求已被转换为https://publish-pXXXX-eYYYY.adobeaemcloud.com/us/en.html?search=foo&campaignId=bar,其中otherParam已被移除。