ADC
感谢您提供反馈

这篇文章已经过机器翻译.放弃

字符串匹配如何与模式集和数据集一起使用

一个模式集或数据集包含一组模式,每个模式都被分配一个唯一的索引。将策略应用于数据包时,表达式会标识要评估的字符串,然后操作员将该字符串与模式集或数据集中定义的模式进行比较,直到找到匹配项或比较了所有模式。然后,根据其函数,运算符要么返回一个表示是否找到匹配模式的布尔值,要么返回与字符串匹配的模式的索引。

注意:本主题解释了模式集的工作原理。数据集的工作方式相同。模式集和数据集之间的唯一区别是集合中定义的模式类型。

考虑以下用例来了解如何使用模式进行字符串匹配。

您要确定 URL 后缀(目标文本)是否包含任何图像文件扩展名。如果不使用模式集,则必须定义一个复杂的表达式,如下所示:

HTTP.REQ.URL.SUFFIX.CONTAINS("svg") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("bmp") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("png") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("gif") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("tiff") ¦¦ HTTP.REQ.URL.SUFFIX.CONTAINS("jpg")

如果 URL 的后缀为“jpg”,使用上述复合表达式,NetScaler 设备必须按顺序遍历整个复合表达式,从一个子表达式到下一个子表达式,以确定请求指的是 jpg 图像。下图显示了该过程中的步骤。

本地化后的图片

当复合表达式包含数百个子表达式时,上述过程是资源密集型的。更好的替代方法是调用模式集的表达式,如下图所示。

本地化后的图片

在如上所示的策略评估期间,操作员 (CONTAINS_ANY) 将请求中标识的字符串与模式设置中定义的模式进行比较,直到找到匹配项。使用 Sample_Patset 表达式,通过六个子表达式进行的多次迭代减少到只有一个。

通过无需配置使用多个 OR 操作执行字符串匹配的复合表达式,模式集或数据集可简化配置并加速请求和响应的处理。

本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
字符串匹配如何与模式集和数据集一起使用