- Published on
Next.jsでaxios-cache-adapterを使って特定のAPIアクセスをキャッシュする方法
- Authors
- Name
- MASAYA IWATA
- @iwaking
Web 開発において、API の使用はほぼ避けられません。しかし、API を使うにはコストがかかることもあり、同じリクエストを何度も繰り返すのは効率的ではありません。そこで役立つのがaxios-cache-adapter
です。本記事では、Next.js でaxios-cache-adapter
を使って特定の API アクセスをキャッシュする方法について解説します。
axios-cache-adapter とは
axios-cache-adapter
は、axios
インスタンスのレスポンスをキャッシュするためのライブラリです。これにより、一度取得した API のレスポンスを再利用することができ、無駄な API リクエストを削減することが可能になります。便利な点として、axios-cache-adapter
はサーバーサイドでも利用できる点です。つまり、Next.js のようなサーバーサイドレンダリング(SSR)を行うフレームワークでも利用可能で、API のレスポンスを効率よく取り扱うことが可能です。デフォルトでは、フロントエンド側のサーバーのメモリにキャッシュが保存されます。
axios-cache-adapter の使い方
まず、yarn
を使ってaxios-cache-adapter
とaxios
をインストールします。
yarn add axios axios-cache-adapter
次に、axios-cache-adapter
をaxios
インスタンス作成時に設定します。以下の例では、axios
のインスタンスを作成し、そのadapter
プロパティにaxios-cache-adapter
を指定しています。
import axios from 'axios'
import { setup } from 'axios-cache-adapter'
// Create axios instance with pre-configured axios-cache-adapter
const api = setup({
maxAge: 15 * 60 * 1000, // 15 minutes
})
上記の設定で、API のレスポンスは 15 分間キャッシュされます。
特定のエンドポイントのみキャッシュさせる方法
特定のエンドポイントのみキャッシュさせたい場合、ignoreCache
オプションを使うことで実装可能です。
例えば、以下のようにデフォルトではignoreCache
を true にしてキャッシュさせないようにしておきます。
const api = setup({
maxAge: 15 * 60 * 1000, // 15 minutes
ignoreCache: true,
})
そして API リクエスト時に axios config で ignoreCache:false とすることでキャッシュが動作するようになります。
await axiosInstance.get('https://jsonplaceholder.typicode.com/posts', {
cache: { ignoreCache: false },
})
このようにキャッシュしたいリクエストとそうでない場合を柔軟に使い分けることが可能です。
まとめ
Next.js を使ったアプリケーション開発において、axios-cache-adapter
は API のレスポンスを効率的に扱えて非常に便利です。同じ API へのリクエストが頻発する場合や、レスポンスの内容が毎回ほぼ変わらない場合には、axios-cache-adapter
の利用を検討するのが良いでしょう。
キャッシュするエンドポイントを特定することも可能で、全ての API リクエストをキャッシュするのではなく、必要な部分だけを効率的にキャッシュすることが可能です。