Next js ApolloClientのキャッシュ設定
最終更新日: 2024年7月17日
Next.jsでGraphQLクライアントを使うときにApolloClientを使っているのですが、一生キャッシュが効いてしまう。
Next.js + ApolloClientでキャッシュ設定をしている記事がなかったので共有です。
長すぎて読めない人へ
- ApolloClientはHTTPLinkを介して、fetchを使っている
- Next.jsにはfetchを拡張しており、{ next: { revalidate: number } }を設定すると(number)秒間キャッシュできる
- HTTPLinkに秒間キャッシュ設定をするといい!
コード
TypeScript
import { HttpLink } from '@apollo/client';
const link = new HttpLink({
uri: "http://localhost:4000/graphql",
fetchOptions: { next: { revalidate: 10 } }, // 10秒で新しくfetchする
});
new ApolloClient({
cache: new InMemoryCache(),
link: link
})
長すぎて書けない。
以上です。
参考
https://www.apollographql.com/docs/react/api/link/apollo-link-http
https://nextjs.org/docs/app/api-reference/functions/fetch#optionsnextrevalidate