[javascript] Express.js에서의 API 메모리 캐시 방법

Express.js는 Node.js를 기반으로 한 웹 프레임워크로, API 개발에 많이 사용됩니다. API의 성능을 향상시키기 위해 캐싱을 사용할 수 있습니다. 이번에는 Express.js에서 API 메모리 캐시 방법에 대해 알아보겠습니다.

메모리 캐시란?

캐시란 매번 데이터를 요청할 때마다 데이터베이스나 외부 서비스에 접근하는 대신, 이전에 요청한 결과를 기억해두고 동일한 요청이 들어오면 저장된 결과를 반환하는 장치입니다. 메모리 캐시는 서버의 메모리에 데이터를 저장하는 방식으로, 데이터를 빠르게 검색할 수 있어 API의 응답 속도를 향상시킬 수 있습니다.

Express.js에서의 메모리 캐시 사용 방법

  1. memory-cache 모듈 설치하기
npm install memory-cache
  1. 모듈을 require하여 사용할 수 있도록 한다.
const cache = require('memory-cache');
  1. API 요청 핸들러에서 캐시 체크 및 사용하기
const express = require('express');
const app = express();

const cacheMiddleware = (duration) => {
  return (req, res, next) => {
    const key = '__express__' + req.originalUrl || req.url;
    const cachedResponse = cache.get(key);

    if (cachedResponse) {
      res.send(cachedResponse);
      return;
    } else {
      res.sendResponse = res.send;
      res.send = (body) => {
        cache.put(key, body, duration * 1000);
        res.sendResponse(body);
      };
      next();
    }
  };
};

app.get('/api/data', cacheMiddleware(60), (req, res) => {
  // 데이터 조회 및 처리 로직
  const data = { message: 'Hello, World!' };

  res.json(data);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

위의 코드에서는 cacheMiddleware라는 함수를 생성하여, 캐시의 유효기간을 인자로 받습니다. 이 함수는 Express.js의 미들웨어로 동작하며, API 요청이 올 때마다 캐시를 확인하고, 캐시에 저장된 데이터가 있을 경우 저장된 데이터를 바로 반환합니다. 캐시에 데이터가 없을 경우, 데이터 조회 및 처리 로직을 수행한 후, 결과를 캐시에 저장하고 클라이언트에 응답합니다.

위의 예제에서는 캐시의 유효 기간을 60초로 설정하였습니다. 이는 약 1분 동안 동일한 요청이 들어올 경우 캐시를 사용하고, 이후에는 새로운 데이터를 가져와서 캐시를 갱신합니다.

결론

Express.js에서 메모리 캐시를 사용하면 API의 성능을 향상시킬 수 있습니다. 캐시를 사용하여 데이터베이스나 외부 서비스에 접근하는 횟수를 줄이고, 응답 시간을 단축시킬 수 있습니다. 이를 통해 더 빠른 API 응답을 제공할 수 있습니다.

참고 자료