Promise를 이용한 캐싱 처리 방법

캐싱은 웹 애플리케이션의 성능을 향상시키는 데 중요한 역할을 합니다. 캐싱을 통해 반복적인 데이터 요청을 줄이고, 서버의 부하를 줄일 수 있습니다. 이번 포스트에서는 Promise를 이용하여 캐싱 처리를 하는 방법을 알아보겠습니다.

1. 캐싱 기능 구현

캐싱은 데이터를 저장하고, 재사용하는 것을 의미합니다. 이를 위해 캐시 객체를 생성하고, 데이터를 저장하고 불러오는 기능을 구현해야 합니다. 다음은 Promise를 이용한 캐싱 기능의 예시 코드입니다.

class Cache {
  constructor() {
    this.cacheData = {};
  }

  async getData(key) {
    if (this.cacheData[key]) { // 캐시에 데이터가 있는 경우
      return Promise.resolve(this.cacheData[key]);
    } else { // 캐시에 데이터가 없는 경우
      const data = await fetchDataFromServer(key);
      this.cacheData[key] = data;
      return Promise.resolve(data);
    }
  }
}

위 코드에서 Cache 클래스는 cacheData 객체를 생성하여 캐시 데이터를 저장합니다. getData 메소드는 주어진 key에 해당하는 데이터를 캐시에서 찾고, 캐시에 없는 경우 서버에서 데이터를 가져와 캐시에 저장합니다.

2. 데이터 요청 처리

위에서 구현한 캐싱 기능을 사용하여 데이터 요청을 처리할 수 있습니다. 다음은 캐싱 기능을 활용한 데이터 요청 처리의 예시 코드입니다.

const cache = new Cache();

async function getUserData(userId) {
  const cacheKey = `user_${userId}`;
  try {
    const data = await cache.getData(cacheKey); // 캐시에서 데이터 가져오기
    console.log(`Data for user ${userId} found in cache.`);
    return data;
  } catch (error) {
    console.error(`Error fetching data for user ${userId}: ${error.message}`);
    throw error;
  }
}

위 코드에서 getUserData 함수는 주어진 userId에 해당하는 사용자 데이터를 조회합니다. 먼저 캐시 객체를 생성한 후, cache.getData 메소드를 호출하여 캐시에서 데이터를 가져옵니다. 데이터가 캐시에 존재하는 경우에는 즉시 데이터를 반환하고, 캐시에 없는 경우에는 서버에서 데이터를 가져온 후 캐시에 저장합니다.

결론

Promise를 이용한 캐싱 처리 방법을 알아보았습니다. 캐싱을 통해 반복적인 데이터 요청을 줄이고, 웹 애플리케이션의 성능을 향상시킬 수 있습니다. Promise를 이용하여 캐싱을 구현하는 것은 간단하지만 효과적인 방법입니다. 프로젝트에서 캐싱 기능을 구현해보고 성능 향상을 경험해보세요! #캐시 #프로미스