静态配置
网关默认最多读取 1 MiB 的 GraphQL 请求数据。网关默认配置还包含磁盘缓存和缓存区域的代理缓存设置。请根据部署方式更新这些设置:
- 主机或 Docker
- Kubernetes (Helm)
对于主机或 Docker 部署,请配置以下设置:
graphql:
max_size: 1048576
apisix:
proxy_cache:
cache_ttl: 10s # 用于磁盘缓存
zones:
- name: disk_cache_one
memory_size: 50m
disk_size: 1G
disk_path: /tmp/disk_cache_one
cache_levels: "1:2"
# - name: disk_cache_two
# memory_size: 50m
# disk_size: 1G
# disk_path: "/tmp/disk_cache_two"
# cache_levels: "1:2"
- name: memory_cache
memory_size: 50m
然后重新加载网关,使更改生效。
网关进程必须能够创建并写入配置的 disk_path。如果磁盘缓存条目需要在容器替换后保留,请在该路径挂载持久化存储。
对于 APISIX Helm Chart 2.16.0 或更高版本,请配置以下值:
apisix:
graphql:
maxSize: 1048576
proxyCache:
cacheTtl: 10s
zones:
- name: disk_cache_one
memory_size: 50m
disk_size: 1G
disk_path: /tmp/disk_cache_one
cache_levels: "1:2"
- name: memory_cache
memory_size: 50m
对于 API7 网关 Helm Chart 3.10.3 或更高版本,请配置以下值:
graphql:
maxSize: 1048576
apisix:
proxyCache:
cacheTtl: 10s
zones:
- name: disk_cache_one
memory_size: 50m
disk_size: 1G
disk_path: /tmp/disk_cache_one
cache_levels: "1:2"
- name: memory_cache
memory_size: 50m
把这些设置添加到部署所使用、受版本控制的完整 values 文件中。设置 Release 详细信息,包括已安装的 Chart 及其版本:
export GATEWAY_RELEASE=replace-with-gateway-release-name
export GATEWAY_NAMESPACE=replace-with-gateway-namespace
export GATEWAY_CHART=replace-with-installed-chart-name
export GATEWAY_CHART_VERSION=replace-with-installed-chart-version
在不更改 Chart 版本的情况下应用完整 values 文件:
helm upgrade "$GATEWAY_RELEASE" "$GATEWAY_CHART" \
--namespace "$GATEWAY_NAMESPACE" \
--version "$GATEWAY_CHART_VERSION" \
-f values.yaml
参数
有关所有插件均可使用的配置项,请参阅插件通用配置。
cache_strategy
有效值:
disk或memory缓存策略。缓存到磁盘或内存中。
cache_zone
与缓存策略一起使用的缓存区域。该值应与配置文件中定义的缓存区域之一匹配,并应对应于缓存策略。例如,当使用内存缓存策略时,应使用内存缓存区域。
cache_ttl
有效值:
大于或等于 1
使用内存缓存时的缓存生存时间(TTL),单位为秒。
要调整磁盘缓存的 TTL,请更新静态配置中的
cache_ttl。仅当响应头中同时缺少Cache-Control和Expires时,才会使用该值。consumer_isolation
如果为 true,当请求解析为 APISIX Consumer 或远程用户时,将已认证的 Consumer 身份添加到实际缓存键前。任意上游凭据(例如转发的 Bearer Token)不会被用作身份。如果路由在未使用 APISIX 身份认证插件的情况下转发用户专属凭据,不同用户可能会收到相同的缓存响应。请为该路由启用 APISIX 身份认证插件或禁用缓存。自 API7 企业版 3.9.13 和 APISIX 3.17.0 起可用。
cache_set_cookie
如果为 true,则允许内存缓存策略缓存包含
Set-Cookie响应头的响应。默认情况下,此类响应不会被缓存。自 API7 企业版 3.9.13 和 APISIX 3.17.0 起可用。