配置POST缓存

更新时间:
复制为 MD 格式

默认情况下,边缘安全加速 ESA节点将POST请求视为动态请求,POST 请求将会绕过缓存模块直接访问源站,ESA节点不会对源站响应信息进行缓存。启用POST缓存功能后,ESA节点可以缓存POST请求的响应内容,并将缓存内容提供给后续的相同请求。

使用场景

POST缓存功能适用于对信息进行查询,并且查询结果可被重复利用的场景。典型场景例如:

电商网站的商品信息查询(类搜索API)

  • 场景描述:前端通过POST发送JSON查询条件(如筛选、分页、聚合),后端返回结构化数据。

  • 为何用POST:因查询参数复杂、长度超限,不适合放URL中(GET请求有长度限制)。

  • 缓存价值:热门查询(如产品类型:鞋类;款式:跑鞋;性别:男子;价格区间:300~600;)结果被缓存可以减少数据库压力。

技术原理

开启POST缓存功能之后,ESA节点在收到客户端的POST请求之后,会先将POST请求转换为GET请求,然后按静态资源的缓存流程来处理;如果ESA节点上没有缓存资源,或者缓存资源已经过期,ESA节点会将请求还原成POST请求之后再转发给源站。

注意事项

  • 缓存过期时间设置:POST缓存通常用于信息查询类场景,建议设置较短(几秒到几分钟)的缓存过期时间。

  • 缓存刷新机制:当源站数据更新时,需主动刷新相关缓存内容,避免客户端接收到陈旧的数据。

  • 安全性:避免缓存含用户隐私数据的POST响应(如个人账单),防止信息泄露。

操作步骤

  1. ESA控制台选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择规则 > 缓存规则

  3. 单击新增规则,填写规则名称

  4. 如果请求匹配以下规则...区域设置要匹配的用户请求特征,具体配置规则请参见规则表达式的组成

  5. POST 缓存区域,单击配置,配置POST缓存参数后单击确定

    • 状态:用于开启或者关闭POST缓存功能。

    • Body 大小限制:用于限制客户端发送的POST请求中携带的Body大小,支持配置的范围是1~8KB。Body大小超出限制的请求将会被ESA节点当作动态请求转发给源站,不会使用缓存流程来处理。

    • 缓存键的处理模式:用于设置ESA节点在缓存源站响应时使用的缓存键,建议在缓存键中包含请求体(Body)的MD5哈希值,否则不同Body可能会命中同一缓存。缓存键的处理模式支持以下两种:

      • 先对 Body 内容取 MD5,然后将 MD5 值加入缓存键

      • 在缓存键中忽略 Body 内容

    image

配置示例

以下示例展示常见场景下的POST缓存参数配置,供您参考。

示例一:商品搜索筛选API(不同查询条件缓存不同结果)

场景:电商前端通过POST发送包含筛选条件的JSON(如类目、价格区间、排序方式),不同用户的查询条件各不相同,但热门搜索组合会被多用户复用。要求不同查询条件命中各自独立的缓存,避免返回错误结果。

配置推荐

image

参数

推荐配置

POST缓存

开启

Body大小限制

4KB(典型搜索请求的JSON1~3KB,留出余量)

缓存键处理模式

先对 Body 内容取 MD5,然后将 MD5 值加入缓存键(不同查询条件生成不同缓存键,确保各自命中独立缓存)

效果:相同筛选条件的请求直接命中缓存,减少数据库查询;不同筛选条件各自独立缓存,不会互相干扰。

示例二:全站公共数据查询(所有用户共享同一缓存)

场景:管理后台通过POST请求拉取全站实时统计数据(如当日订单总量、在线用户数)。所有用户访问同一接口,期望返回相同内容,不需要因Body差异(如请求中包含客户端标识符)而区分缓存,希望所有请求共享同一份缓存。

推荐配置

image

参数

推荐配置

POST缓存

开启

Body大小限制

2KB(请求Body仅含少量标识符,体积小)

缓存键处理模式

在缓存键中忽略 Body 内容(所有POST请求共享同一缓存条目,Body差异不影响缓存命中)

效果:第一个请求回源后,后续所有用户的请求直接命中同一缓存,大幅降低源站并发压力。