什么是 apollo-cache-control
apollo-cache-control 是一个用于控制缓存的 npm 包,它可以通过设置 HTTP header 实现对缓存行为的控制。它让你的应用更智能地使用缓存,提高应用性能的同时避免不必要的请求。
如何使用 apollo-cache-control
安装
你可以通过 npm 安装 apollo-cache-control,如下所示:
npm install apollo-cache-control
设置
在 Apollo Server 中使用 apollo-cache-control 的示例代码如下:
-- -------------------- ---- ------- ----- - ------------- --- - - ------------------------- ----- ------------ - -------------------------------- ----- -------- - ---- ---- ----- - ------ ------- - -- ----- --------- - - ------ - ------ -- -- - ------ ------ -------- -- -- -- ----- ------ - --- -------------- --------- ---------- -------- ----------------- --- ----------------------- --- -- -- - ------------------- ----- -- --------- ---
可以在插件的参数中配置 cacheControl 选项:
-- -------------------- ---- ------- ----- ------ - --- -------------- --------- ---------- -------- - -------------- -------------- ----- --------------------- ----- --- -- ---
在上面的示例代码中,我们设置了默认的最大缓存时间为 3600 秒,并且启用了 HTTP header 计算。
使用
在 GraphQL schema 中添加 cacheControl 指令,示例代码如下所示:
-- -------------------- ---- ------- ---- ----- - ------ -------- --------------------- --- - ---- ---- - --- --- ------ ------- -------- ------- -
在上面的示例代码中,我们使用 @cacheControl 指令为查询 posts 设置了最大缓存时间为 60 秒。
缓存头设置
在客户端发出的 HTTP 请求中,cache-control 必须是 public 或 private,同时包含 max-age 或 s-maxage。
Cache-Control: public, max-age=60
当请求被服务器处理时, apollo-cache-control 将该信息从 GraphQL schema 中解析并设置 HTTP header。
引用客户端请求头设置
客户端还可以在请求头中使用 apollo-cache-control 属性。如下所示:
const client = new ApolloClient({ uri: 'https://localhost:4000/graphql', cache: new InMemoryCache(), headers: { 'Cache-Control': 'public, max-age=60', }, });
上面的示例代码演示了在客户端中使用 apollo-cache-control 属性。
总结
通过使用 apollo-cache-control 包,我们可以更智能地控制使用缓存和提高我们应用的性能,在应用开发过程中是一个十分有用的工具。我们在使用过程中需要注意对 HTTP header 的设置。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/195823