NSX Advanced Load Balancer 可以根据 URI 和 MIME 类型缓存响应。本节详细介绍了这两个选项。

基于 MIME 类型的缓存

以前,基于 MIME 类型的缓存是唯一的选项,它基于缓存控制配置参数,例如,应用程序配置文件中的可缓存或无法缓存的 MIME 类型。该配置确定 NSX Advanced Load Balancer 是否缓存来自服务器的成功响应。如果配置了可缓存的 MIME 类型(不是默认设置),只有在来自服务器的 200 OK 响应的 MIME 类型与可缓存的 MIME 类型列表中的引用之一匹配时,才会缓存该响应。否则,不会缓存该响应。

如果仅配置了无法缓存的 MIME 类型列表,则不会缓存具有匹配 MIME 类型的 200 OK 响应,并缓存所有其他响应。如果用户同时配置了可缓存的 MIME 类型列表和无法缓存的 MIME 类型列表,则仅缓存与可缓存的类型列表中的条目匹配的响应;实际上,将忽略任何无法缓存的类型列表。

选择性 URI 缓存

与基于 MIME 类型的缓存相比,选择性 URI 缓存更精细;它基于无法缓存的 URI 列表。该列表具有匹配条件和配置一组字符串组的选项,每个字符串组将一个或多个 URI 存储为字符串。

如果配置了无法缓存的 URI 列表,则不会缓存与该列表匹配的请求 URI 的 200 OK 响应。除了根据该列表处理 URI 的结果以外,缓存/获取决策还取决于请求和响应缓存控制标头(例如 no-cache/no-store)以及应用程序配置文件特定的其他缓存相关配置。

下面的图 1 显示了如何根据可缓存和无法缓存的 MIME 类型以及无法缓存的 URI 缓存配置处理请求 URI。



无法缓存的 URI 路径匹配配置

除了启用缓存以外,该配置还接受

  • 匹配条件

  • 确定区分大小写的选项

  • URI 列表

| cache_config | 
    | enabled | True |
    .
    .
    .
   | uri_non_cacheable | 
         | match_criteria | DOES_NOT_EQUAL |
         | match_case | INSENSITIVE |
         | string_group_refs[1] | non-uri_sg

一组完整的 uri_non_cacheable 配置参数

match_criteria 参数可以采用以下值:

  • BEGINS_WITH

  • DOES_NOT_BEGIN_WITH

  • CONTAINS

  • DOES_NOT_CONTAIN

  • ENDS_WITH

  • DOES_NOT_END_WITH

  • EQUALS

  • DOES_NOT_EQUAL

  • REGEX_MATCH

  • REGEX_DOES_NOT_MATCH

  1. match_case 参数可以是 SENSITIVE 或 INSENSITIVE,默认值为 INSENSITIVE。

  2. string_group_refs 参数是字符串组引用列表,其中将 URI 配置为字符串。可以在 NSX Advanced Load Balancer UI 中导航到模板 > > 字符串组以配置这些字符串组。

注:
  1. 如果 uri_non_cacheable 缓存路径匹配未定义 string_group_refs,则 NSX Advanced Load Balancer 不会对请求进行基于 URI 的选择性缓存。

  2. 除了字符串组以外,uri_non_cacheable 路径匹配对象还可能使用字符串选项。不过,不支持在路径匹配中将 URI 添加为字符串。

忽略请求缓存控制

在应用程序配置文件的缓存配置中,如果 ignore_request_cache_control 设置为 True,则忽略客户端缓存控制标头(如下所示),并且 NSX Advanced Load Balancer 按照前面描述的缓存控制流程在缓存中获取/存储对象。如果该标记设置为 False,则采用请求中的客户端缓存控制标记。默认情况下,该标记设置为 False。在 ignore_request_cache_control 设置为 True 时,将忽略以下缓存过期指令。

请求中的缓存过期指令

- Pragma: no-cache
- Cache-control:
	no-cache | no-store
	max-age == 0

可缓存查询

为了将查询参数与 URI 一起匹配,用户必须在缓存配置中将 query_cacheable 选项设置为 True。这样,在与 uri_non_cacheable 配置中配置的字符串组中的 URI 字符串进行匹配时,缓存逻辑可以将查询参数与 URI 一起包括在内。

示例 CLI 配置

Applicationprofile:
   http_profile:
      cache_config :                   
             enabled                           True                                                    
             xcache_header                     True                                                    
             age_header                        True                                                    
             date_header                       True                                                    
             min_object_size                   10                                                      
             max_object_size                   4194304                                                 
             default_expire                    600                                                     
             heuristic_expire                  False                                                   
             max_cache_size                    0                                                       
             query_cacheable                   True                                                    
             aggressive                        True                                                    
             uri_non_cacheable                                                                         
               match_criteria                  EQUALS                                                  
               match_case                      INSENSITIVE                                             
               string_group_refs[1]            uri_strings                                             
               ignore_request_cache_control    True

NSX Advanced Load Balancer UI 配置

  1. 导航到模板 > 配置文件 > 应用程序

  2. 创建新的应用程序配置文件,或者编辑某个现有的应用程序配置文件。

  3. 新建应用程序配置文件窗口中选择缓存选项卡。请注意,默认禁用缓存。

  4. 选择启用缓存选项以显示无法缓存的 URI 选项。

  5. 选择无法缓存的 URI 选项以输入条件字符串组或自定义字符串

  6. 单击保存