缓存 - AWS AppSync
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

缓存

AWS AppSync 的服务器端数据缓存功能通过在高速内存缓存中提供数据来减少直接访问数据源的需求,从而提高性能并降低延迟。为了利用 AppSync API 中的服务器端缓存,请参阅本节以定义所需行为。

AWS AppSync 在 AppSync 服务账户中托管 Amazon ElastiCache Redis 实例,这些账户与您的 AppSync API 位于同一 AWS 区域。以下实例类型具有以下特性:

  • t2.small

    1 个 vCPU、1.5 GiB 内存、低到中等网络性能

  • t2.medium

    2 个 vCPU、3 GiB 内存、低到中等网络性能

  • r4.large

    2 个 vCPU、12.3 GiB 内存,高达 10 千兆网络性能

  • r4.xlarge

    4 个 vCPU、25.05 GiB 内存、高达 10 千兆网络性能

  • r4.2xlarge

    8 个 vCPU、50.47 GiB 内存、高达 10 千兆网络性能

  • r4.4xlarge

    16 个 vCPU、101.38 GiB 内存、高达 10 千兆网络性能

  • r4.8xlarge

    32 个 vCPU、203.26 GiB 内存、10 千兆网络性能

以下是与缓存相关的行为。

  • 没有服务器端缓存。

  • 完整请求缓存

    如果数据不在缓存中,则将从数据源中检索数据并填充缓存,直到 TTL 过期。对 API 的所有后续请求都将从缓存返回,这意味着除非 TTL 过期,否则不会直接联系数据源。作为此设置中的缓存键,我们使用 $context.arguments$context.identity 映射的内容。

  • 每个解析程序的缓存

    使用此设置时,需要明确选择每个解析程序来缓存响应。TTL 和缓存密钥可以在解析程序上指定。可以指定的缓存键是 $context.arguments$context.identity 映射中的值。TTL 值是必需的,但缓存键是可选的。如果未指定缓存键,则默认值为 $context.arguments$context.identity 映射的内容,类似于上述情况。例如,可以使用 $context.arguments.id$context.arguments.InputType.id 以及 $context.identity.sub$context.identity.claims.username。当没有指定缓存键而只指定 TTL 时,解析程序的行为与上述行为类似。

缓存生存期。这定义了缓存条目将在内存中存储的时长。最大 TTL 为 3600 秒(1 小时),之后条目将被自动删除。

缓存加密有两种风格,如下所述。这些设置类似于 Amazon ElastiCache for Redis 所允许的设置。只有在首次为 AppSync API 启用缓存时,才能启用加密设置。

  • 传输中加密:AppSync、缓存和数据源(不安全的 HTTP 数据源除外)之间的请求将在网络级别加密。由于在终端节点加密和解密数据时需要进行一些处理,因此启用传输中加密会对性能产生一些影响。

  • 静态加密:交换操作期间从内存保存到磁盘的数据将在缓存实例中加密。此设置还会对性能产生影响。

为了使缓存条目失效,可以使用刷新缓存 API 调用。这可以通过控制台或 CLI 调用。

有关更多信息,请参阅《AWS AppSync API 参考》中的 ApiCache 数据类型。

Apollo GraphQL 客户端