JavaScript 예제와 함께 캐시 사용
캐시란 무엇이며 왜 필요한가요?
애플리케이션에서 캐싱은 대기 시간을 줄이거나 불필요한 리소스를 사용하지 않도록 데이터를 메모리 어딘가에 전략적으로 저장하는 것입니다. 특정 데이터에 더 빠르게 액세스하기 위해 사용자에게 더 가까운 서버 또는 실제로 사용자 컴퓨터에 있을 수 있습니다.
캐시를 사용한 장단점
캐시에서 빠른 액세스를 위해 항목을 메모리에 저장하는 것처럼 (당연히) 데이터 지속성이 없습니다. 즉, 서버를 재설정하면 데이터가 손실됩니다. Redis는 메모리 덤프를 사용하여 지속성 스냅샷을 생성하여 이 문제를 해결합니다.
데이터를 메모리에 저장하면 예를 들어 HDD보다 저장 용량이 낮아 비용이 더 많이 들기 때문에 무엇을 얼마 동안 저장할 것인지에 대한 좋은 전략을 가지고 있어야 합니다.
캐시 구조
구현 측면에서는 캐시가 키/값 쌍으로 항목을 저장하는 사전 데이터 구조로 사용된다는 점만 알면 됩니다. 예를 들어 매개변수를 키로 사용하여 특정 http 요청에 대한 데이터를 저장할 수 있습니다.
캐시 예시 사용 사례
날씨 데이터용 타사 API를 사용하여 날씨 애플리케이션 이미지를 만들고 이 API는 요청당 비용을 청구합니다. 사용자를 위해 업데이트된 데이터를 반환하는 것이 타당하지만 매 초마다 정확할 만큼 충분히 중요합니까? TTL이 60초인 캐시를 사용하면 특정 영역에서 애플리케이션을 사용하는 사용자 수에 관계없이 분당 타사 API에 한 번만 요청하고 캐시 데이터로 사용자를 업데이트할 수 있습니다. 이렇게 하면 이 API에 대한 많은 요청을 줄이고 비용을 절약할 수 있으며 데이터를 사용자에게 더 빠르게 반환할 수 있습니다.
간단한 메모리 내 캐시 예제
Node.js의 이 예제에서는 node-cache 패키지를 사용하여 메모리 내 캐시를 빌드합니다.
import axios from "axios";
import NodeCache from "node-cache";
class WeatherRepository {
// Lets set the default TTL to 60 seconds, so the data will expire from the
// cache in 60 seconds and we'll have to fetch the updated data from the API.
weatherCache = new NodeCache({ stdTTL: 60 });
async getCurrentWeatherInformation(city) {
// First, lets check if the required data is in cache
const cachedData = this.weatherCache.get(city);
// If it is, return it
if (cachedData) return cachedData;
const { data: weatherData } = await axios.get(
`https://weather-api-url/?city=${city}`
);
// Else, fetch the data from the API then save it on the cache.
// Here we'll use the city as key.
this.weatherCache.set(city, weatherData);
return weatherData;
}
}
export { WeatherRepository };
메모리 내 캐시보다 훨씬 더 많은 기능을 갖춘 원격 데이터 구조 서버가 필요한 경우 Redis를 찾으십시오.
결론
캐시는 대기 시간을 줄이고 최근 데이터 또는 재사용 가능성이 있는 데이터를 저장하는 데 매우 사용되는 전략입니다. 이 기사가 유용하고 프로그래밍 무기고에 캐시를 추가하기를 바랍니다. 질문이나 제안 사항이 있으면 알려주세요!
Reference
이 문제에 관하여(JavaScript 예제와 함께 캐시 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/costamatheus97/using-cache-with-javascript-examples-520i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)