>웹 프론트엔드 >JS 튜토리얼 >React 쿼리 데이터베이스 플러그인: 캐시 워밍 및 제거 전략

React 쿼리 데이터베이스 플러그인: 캐시 워밍 및 제거 전략

WBOY
WBOY원래의
2023-09-29 14:41:06948검색

React Query 数据库插件:实现缓存预热和淘汰的策略

React 쿼리 데이터베이스 플러그인: 캐시 워밍업 및 제거 구현 전략, 구체적인 코드 예제 필요

최신 프런트 엔드 애플리케이션의 복잡성이 계속 증가함에 따라 데이터 관리 및 캐싱이 점점 더 중요해지고 있습니다. React Query는 React 애플리케이션에서 데이터 검색, 캐싱 및 업데이트 작업을 처리하는 데 도움이 되는 강력한 데이터 관리 라이브러리입니다. 그러나 React Query는 기본적으로 내장된 캐싱 전략을 사용합니다. 캐시 워밍업 및 제거 전략과 같은 고급 캐시 제어가 필요한 경우 React Query 데이터베이스 플러그인을 사용하여 이를 달성할 수 있습니다.

이 글에서는 React Query 데이터베이스 플러그인을 사용하여 캐시 워밍업 및 제거 전략을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

먼저 React Query 및 React Query 데이터베이스 플러그인을 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

npm install react-query react-query-database

설치가 완료되면 애플리케이션에 다음 라이브러리를 도입할 수 있습니다.

import { QueryClient, QueryClientProvider } from 'react-query';
import { createDatabaseCache } from 'react-query-database';

다음으로 QueryClient를 생성하고 여기에 데이터베이스 캐시 플러그인을 추가합니다.

const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      cacheTime: 1000 * 60 * 5, // 设置默认缓存时间为 5 分钟
      plugins: [
        createDatabaseCache(), // 添加数据库缓存插件
      ],
    },
  },
});

이제 , 우리는 QueryClient에 데이터베이스 캐시 플러그인을 성공적으로 추가했습니다. 다음으로, 일부 사용자 정의 캐시 워밍업 및 제거 정책을 정의할 수 있습니다.

먼저 캐시 워밍업 구현 방법을 살펴보겠습니다. 사용자 정보를 가져오라는 요청이 있다고 가정해 보겠습니다.

import { useQuery } from 'react-query';

const fetchUser = async (userId) => {
  // 模拟获取用户信息的异步请求
  const response = await fetch(`/api/users/${userId}`);
  const data = await response.json();
  return data;
};

const UserProfile = ({ userId }) => {
  const { data } = useQuery(['user', userId], () => fetchUser(userId));

  if (data) {
    // 渲染用户信息
  }

  return null;
};

이제 사용자 경험을 개선하기 위해 애플리케이션이 시작될 때 일부 사용자 정보를 캐시에 미리 로드하려고 합니다. 애플리케이션의 진입점에 다음 코드를 추가할 수 있습니다.

import { useQueryClient } from 'react-query';

const App = () => {
  const queryClient = useQueryClient();

  useEffect(() => {
    const userIds = [1, 2, 3]; // 假设我们要预热的用户 ID 列表

    userIds.forEach((userId) => {
      const queryKey = ['user', userId];
      queryClient.prefetchQuery(queryKey, () => fetchUser(userId));
    });
  }, []);

  return (
    // 应用程序的其他内容
  );
};

이 예에서는 예열할 사용자 ID가 포함된 배열을 정의하고 useEffect의 queryClient.prefetchQuery 메서드를 사용하여 캐시를 예열합니다. fetchUser 함수는 데이터를 캐시에 저장하기 위해 준비 중에 호출됩니다. 이러한 방식으로 UserProfile 구성 요소가 사용자 정보를 렌더링해야 하는 경우 다른 네트워크 요청 없이 즉시 캐시에서 데이터를 가져옵니다.

다음으로 캐시 제거 전략을 구현하는 방법을 살펴보겠습니다. 기사 목록을 가져오라는 요청이 있다고 가정해 보겠습니다.

import { useQuery } from 'react-query';

const fetchArticles = async () => {
  // 模拟获取文章列表的异步请求
  const response = await fetch('/api/articles');
  const data = await response.json();
  return data;
};

const ArticlesList = () => {
  const { data } = useQuery('articles', fetchArticles);

  if (data) {
    // 渲染文章列表
  }

  return null;
};

기본적으로 React Query의 캐싱 전략은 데이터를 메모리에 저장하고 일정 기간이 지나면 자동으로 제거하는 것입니다. 그러나 때로는 맞춤형 제거 전략을 구현해야 할 수도 있습니다. 쿼리의 staleTime 매개변수를 설정하여 이를 달성할 수 있습니다.

const { data } = useQuery('articles', fetchArticles, {
  staleTime: 1000 * 60 * 30, // 设置缓存过期时间为 30 分钟
});

이 예에서는 캐시 만료 시간을 30분으로 설정합니다. 데이터가 만료되면 React Query는 최신 데이터를 얻고 캐시를 업데이트하기 위해 자동으로 새 요청을 시작합니다.

캐시 만료 시간을 설정하는 것 외에도 쿼리의 캐시타임 매개변수를 사용하여 데이터가 캐시에 유지되는 최대 시간을 설정할 수도 있습니다. React Query는 다음 시간을 초과하면 캐시에서 데이터를 삭제합니다.

const { data } = useQuery('articles', fetchArticles, {
  staleTime: 1000 * 60 * 30, // 设置缓存过期时间为 30 分钟
  cacheTime: 1000 * 60 * 60 * 24, // 设置最长缓存时间为 24 小时
});

이 예에서는 최대 캐시 시간을 24시간으로 설정했습니다. 즉, 캐시 만료 시간을 초과하지 않더라도 24시간 후에 데이터가 제거됩니다.

React Query 데이터베이스 플러그인을 사용하면 캐시 워밍업 및 제거 전략을 쉽게 구현하여 애플리케이션 성능과 사용자 경험을 향상시킬 수 있습니다. 이 기사에서는 React Query 데이터베이스 플러그인을 설치 및 구성하는 방법을 설명하고 캐시 워밍업 및 제거에 대한 구체적인 코드 예제를 제공합니다. 이 예제가 React Query 데이터베이스 플러그인을 더 잘 이해하고 사용하며 애플리케이션을 최적화하는 데 도움이 되기를 바랍니다.

위 내용은 React 쿼리 데이터베이스 플러그인: 캐시 워밍 및 제거 전략의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.