상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
6인식탁을 구매하기 전에 체크해야 할 사항은 무엇인가요?
외부 감사가 문서 보안에 미치는 영향은 무엇인가요?
퇴직 직원의 문서 보안 관리 방법은 무엇인가요?
문서 보안 인프라를 자동화하는 방법은 어떤 것이 있나요?
호텔관광경영학과의 수업에서의 팀 프로젝트는 어떤 과제가 주어지나요?
데이터복원에 성공한 사례는 어떤 것이 있나요?
데이터복원 후 데이터 접근 속도는 어떨까요?
아이폰데이터복구와 관련된 전문가를 찾는 팁은?
아이폰데이터복구를 위한 최선의 접근 방식은 무엇인가요?
아이폰데이터복구를 하는 동안 기기를 사용할 수 있나요?
아이폰데이터복구와 관련된 유명한 사례는 있을까요?
남성 갱년기 치료를 위한 약물 치료는 어떻게 이루어지나요?
Previous
Next
수정하기 - Node.js에서 API 요청을 캐싱하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Node.js에서 API 요청을 캐싱하는 방법은 여러 가지가 있으며, 이를 통해 성능을 향상시키고 서버의 부하를 줄일 수 있습니다. 캐싱은 동일한 요청에 대해 반복적으로 데이터를 가져오는 대신, 이전에 가져온 데이터를 저장하여 재사용하는 기법입니다. 아래에서는 Node.js에서 API 요청을 캐싱하는 다양한 방법과 그 구현 방법에 대해 자세히 설명하겠습니다. 1. 메모리 캐싱 가장 간단한 방법은 메모리 내에서 데이터를 캐싱하는 것입니다. Node.js의 `memory-cache`와 같은 라이브러리를 사용할 수 있습니다. 설치 ```bash npm install memory-cache ``` 사용 예시 ```javascript const express = require('express'); const cache = require('memory-cache'); const axios = require('axios'); const app = express(); const CACHE_DURATION = 60000; // 1분 app.get('/api/data', async (req, res) => { const cacheKey = 'apiData'; const cachedData = cache.get(cacheKey); if (cachedData) { return res.json(cachedData); } try { const response = await axios.get('https://api.example.com/data'); cache.put(cacheKey, response.data, CACHE_DURATION); return res.json(response.data); } catch (error) { return res.status(500).json({ error: 'Failed to fetch data' }); } }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. 파일 시스템 캐싱 메모리 캐싱이 아닌 파일 시스템에 데이터를 저장하여 캐싱할 수도 있습니다. `node-cache`와 같은 라이브러리를 사용하여 파일 시스템에 데이터를 저장할 수 있습니다. 설치 ```bash npm install node-cache ``` 사용 예시 ```javascript const express = require('express'); const NodeCache = require('node-cache'); const axios = require('axios'); const app = express(); const myCache = new NodeCache({ stdTTL: 100 }); // TTL 100초 app.get('/api/data', async (req, res) => { const cacheKey = 'apiData'; const cachedData = myCache.get(cacheKey); if (cachedData) { return res.json(cachedData); } try { const response = await axios.get('https://api.example.com/data'); myCache.set(cacheKey, response.data); return res.json(response.data); } catch (error) { return res.status(500).json({ error: 'Failed to fetch data' }); } }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 3. Redis를 이용한 캐싱 Redis는 인메모리 데이터 구조 저장소로, 분산 캐싱에 적합합니다. Redis를 사용하면 여러 서버 간에 캐시를 공유할 수 있습니다. 설치 Redis 서버를 설치하고, `redis` 패키지를 설치합니다. ```bash npm install redis ``` 사용 예시 ```javascript const express = require('express'); const redis = require('redis'); const axios = require('axios'); const app = express(); const redisClient = redis.createClient(); redisClient.on('error', (err) => { console.error('Redis error: ', err); }); app.get('/api/data', async (req, res) => { const cacheKey = 'apiData'; redisClient.get(cacheKey, async (err, cachedData) => { if (err) return res.status(500).json({ error: 'Redis error' }); if (cachedData) { return res.json(JSON.parse(cachedData)); } try { const response = await axios.get('https://api.example.com/data'); redisClient.setex(cacheKey, 3600, JSON.stringify(response.data)); // 1시간 캐시 return res.json(response.data); } catch (error) { return res.status(500).json({ error: 'Failed to fetch data' }); } }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 4. HTTP 캐싱 HTTP 캐싱을 활용하여 클라이언트 측에서 캐싱을 관리할 수도 있습니다. 이를 위해 `Cache-Control` 헤더를 설정할 수 있습니다. ```javascript app.get('/api/data', async (req, res) => { res.set('Cache-Control', 'public, max-age=3600'); // 1시간 캐시 // API 요청 처리 로직... }); ``` 결론 Node.js에서 API 요청을 캐싱하는 방법은 다양하며, 각 방법은 특정 상황에 따라 장단점이 있습니다. 메모리 캐싱은 간단하고 빠르지만, 서버가 재시작되면 데이터가 사라집니다. Redis와 같은 외부 캐시 시스템은 분산 환경에서 유용하며, HTTP 캐싱은 클라이언트 측에서 캐시를 관리할 수 있게 해줍니다. 따라서 애플리케이션의 요구 사항에 맞는 캐싱 전략을 선택하는 것이 중요합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기