于10月8日至10日在纽约市与我们相聚,学习有关GraphQL联邦和API平台工程的最新技巧、趋势和新闻。加入我们,参加纽约市的2024年GraphQL峰会
文档
免费开始

API 参考:缓存控制插件


使用此插件

本文档记录了ApolloServerPluginCacheControl 插件,您可以从 @apollo/server/plugin/cacheControl 导入。

该插件使您的 能够在 级别指定缓存策略,无论是在您的模式中使用 以静态方式,还是在您的 中通过 info.cacheControl API 以动态方式。它还默认设置 cache-control HTTP 响应头。有关更多信息示例,请参阅 服务器端缓存

要使用 @cacheControl 指令,您必须首先在您的模式中 定义它

默认在所有服务器上安裝此插件,并使用默认配置。通常您不需要自己安裝此插件;只有当您想提供非默认配置时才需要这样做。

如果您想配置 ApolloServerPluginCacheControl 插件,导入它并将其传递给您的 ApolloServer 构造函数的 plugins 数组:

import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginCacheControl } from '@apollo/server/plugin/cacheControl';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginCacheControl({
// Cache everything for 1 second by default.
defaultMaxAge: 1,
// Don't send the `cache-control` response header.
calculateHttpHeaders: false,
}),
],
});
import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginCacheControl } from '@apollo/server/plugin/cacheControl';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginCacheControl({
// Cache everything for 1 second by default.
defaultMaxAge: 1,
// Don't send the `cache-control` response header.
calculateHttpHeaders: false,
}),
],
});

如果您完全不希望使用缓存控制,可以使用 ApolloServerPluginCacheControlDisabled 插件显式禁用它:

import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginCacheControlDisabled } from '@apollo/server/plugin/disabled';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [ApolloServerPluginCacheControlDisabled()],
});
import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginCacheControlDisabled } from '@apollo/server/plugin/disabled';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [ApolloServerPluginCacheControlDisabled()],
});

如果不使用 @cacheControl 指令或 info.cacheControl API,则此插件对您的应用几乎没有影响。如果您目前没有使用它,禁用插件可能会带来一丝性能提升。

选项

名称 /
类型
描述
defaultMaxAge

数字

默认情况下,根 以及返回组合类型(对象、接口或联合)的字段被认定为不可缓存的(maxAge 0),除非通过 @cacheControlinfo.cacheControl 明确提供缓存提示。您可以将此选项设置为使这些较大的默认 maxAge 大于 0;这将实际上使所有请求都是可缓存的。

在 Apollo Server 2 中,此选项作为对 Apollo Server@cacheControl(inheritMaxAge: true) 指令参数解决该问题的替代方案而广受欢迎。 更多详细信息,请参阅 默认 maxAge

calculateHttpHeaders

布尔值 | 'if-cacheable'

默认情况下,缓存控制插件会将 cache-control HTTP 响应头设置为可缓存的请求时为 max-age=MAXAGE, publicmax-age=MAXAGE, private,不可缓存的请求时设置为 no-store。如果您指定 calculateHttpHeaders: false,则不会设置此头。如果您指定 calculateHttpHeaders: 'if-cacheable',则只有在请求可缓存的情况下才会设置头。响应可缓存时,如果其整体缓存策略有一个非零的 maxAge,并且主体是单个结果而不是增量交付响应,且主体不包含错误。设置此选项不阻止计算 requestContext.overallCachePolicy 字段,也不阻止 响应缓存插件 的工作。

上一页
排空 HTTP 服务器
下一页
着陆页
评分文章评分

©2024Apache Graph Inc.,商号Apollo GraphQL。

隐私政策

公司