Netscaler数据索引String Map与Pattern Set的区别

Netscaler中建立索引或子集无疑是解耦前后关联事务的非常好的思路,可以大幅度的减少后期策略的修改,简化管理,降低用户的使用门槛。即便是不常操作netscaler但又偶尔有改动策略需求的管理员,你只要告诉他改一个地方的文件即可完成多条策略的更新工作,而不需要他理解复杂的策略逻辑关系。在netscaler中有data set、pattern set、string map等方式来提供不同目的的属性子集以供操作。我们这里先讨论其中两个与字符串相关的类型。
以下是手册中对这两个参数的描述:
String maps are similar in structure to pattern sets (a pattern set defines a mapping of index values to strings; a string map defines a mapping of strings to strings) and the configuration commands for string maps (commands such as add, bind, unbind, remove, and show) are syntactically similar to configuration commands for pattern sets. Also, as with index values in a pattern set, each key in a string map must be unique across the map. The following table illustrates a string map called url_string_map, which contains URLs as keys and values.
Netscaler数据索引String Map与Pattern Set的区别_第1张图片
String map与Pattern set有很多相似之处,String map的数值是以一对一的情况出现,可以用在字符严格的一对一替换上
Netscaler数据索引String Map与Pattern Set的区别_第2张图片
而Pattern Set则是以索引的形式来标识字符串,适合用在关键点的选取而非替换上,如果要用作替换只能做多对一或多对多的替换,无法精确到一对一。好的一点是它有索引,可以用策略来选取出其中的索引值来发展更多的应用。

Netscaler数据索引String Map与Pattern Set的区别_第3张图片
测试举例:

Netscaler数据索引String Map与Pattern Set的区别_第4张图片

在Responder测Action中应用String map
Netscaler数据索引String Map与Pattern Set的区别_第5张图片

测试效果:
在URL中输入/test
Netscaler数据索引String Map与Pattern Set的区别
匹配String Map后会被替换成

Netscaler数据索引String Map与Pattern Set的区别
而输入/cj
Netscaler数据索引String Map与Pattern Set的区别
依旧匹配Sting Map但被替换成
Netscaler数据索引String Map与Pattern Set的区别

如果使用通常的办法,只能通过多条策略来实现

Action
Netscaler数据索引String Map与Pattern Set的区别_第6张图片

Policy
Netscaler数据索引String Map与Pattern Set的区别

Pattern set则无法实现上述功能,由于Pattern Set在此环境中是多对一个情况,会出现/test和/cj都被替换成/b/index.php
Netscaler数据索引String Map与Pattern Set的区别_第7张图片
Netscaler数据索引String Map与Pattern Set的区别_第8张图片