API 参考:缓存控制插件
使用此插件
本文档记录了ApolloServerPluginCacheControl
插件,您可以从 @apollo/server/plugin/cacheControl
导入。
该插件使您的 GraphQL 服务器 能够在 字段 级别指定缓存策略,无论是在您的模式中使用 指令 以静态方式,还是在您的 解析器 中通过 info.cacheControl
API 以动态方式。它还默认设置 cache-control
HTTP 响应头。有关更多信息示例,请参阅 服务器端缓存。
要使用 @cacheControl
指令,您必须首先在您的模式中 定义它。
Apollo Server 默认在所有服务器上安裝此插件,并使用默认配置。通常您不需要自己安裝此插件;只有当您想提供非默认配置时才需要这样做。
如果您想配置 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,则此插件对您的应用几乎没有影响。如果您目前没有使用它,禁用插件可能会带来一丝性能提升。
选项
名称 / 类型 | 描述 |
---|---|
| 默认情况下,根 字段 以及返回组合类型(对象、接口或联合)的字段被认定为不可缓存的( 在 Apollo Server 2 中,此选项作为对 Apollo Server 中 |
| 默认情况下,缓存控制插件会将 |