[typescript] 타입스크립트에서 Axios를 이용하여 요청에 대한 캐싱 및 저장소 관리하기
웹 애플리케이션을 개발하다 보면 API 요청에 대한 캐싱(caching)이 필요한 경우가 있습니다. 캐싱은 반복적인 요청을 줄이고 응답 속도를 향상시키는 데 도움이 됩니다. 이번 포스트에서는 타입스크립트에서 Axios를 이용하여 요청에 대한 캐싱 및 저장소 관리하는 방법에 대해 알아보겠습니다.
Axios 및 캐시 라이브러리 설치
먼저, Axios와 캐시 라이브러리를 설치해야 합니다. Axios는 HTTP 클라이언트 라이브러리이며, axios-cache-adapter는 Axios 요청에 대한 캐싱을 지원하는 라이브러리입니다.
npm install axios axios-cache-adapter
캐시 설정
Axios 캐시 어댑터를 이용하여 간단히 캐시를 설정할 수 있습니다. 예를 들어, LocalStorage를 캐시 스토어로 사용하는 방법은 다음과 같습니다.
import axios from 'axios';
import axiosCacheAdapter from 'axios-cache-adapter';
const adapter = axiosCacheAdapter.setupCache({
maxAge: 15 * 60 * 1000,
store: {
get: (key: string) => Promise.resolve(window.localStorage.getItem(key)),
set: (key: string, value: any) => Promise.resolve(window.localStorage.setItem(key, value)),
reset: () => Promise.resolve(window.localStorage.clear())
}
});
const api = axios.create({
adapter
});
api.get('/data'); // 요청이 캐시에 저장됨
위 코드에서 maxAge는 캐시의 최대 지속 시간(밀리초)을 나타내며, store는 캐시 저장소로, 여기서는 LocalStorage를 사용했습니다.
커스텀 저장소 구현
원하는 경우, 커스텀 저장소를 구현하여 캐시 관리를 더욱 효율적으로 할 수 있습니다. 예를 들어, 메모리 캐시 또는 Redis를 사용할 수 있습니다.
class CustomCacheStore {
cache: Record<string, any> = {};
get(key: string) {
return Promise.resolve(this.cache[key]);
}
set(key: string, value: any) {
this.cache[key] = value;
return Promise.resolve();
}
reset() {
this.cache = {};
return Promise.resolve();
}
}
const customAdapter = axiosCacheAdapter.setupCache({
maxAge: 15 * 60 * 1000,
store: new CustomCacheStore()
});
const customApi = axios.create({
adapter: customAdapter
});
// customApi.get('/data');
결론
타입스크립트에서 Axios를 이용하여 API 요청에 대한 캐싱 및 저장소 관리는 간단하게 구현할 수 있습니다. 캐싱을 통해 서버 요청 횟수를 줄이고 성능을 향상시킬 수 있으며, 적절한 저장소 선택과 커스터마이징을 통해 프로젝트 요구에 맞는 캐시 시스템을 구축할 수 있습니다.
참고: axios-cache-adapter GitHub