Puppeteer를 사용한 캐시 유지

이우철·2025년 11월 4일
  1. Puppeteer 설치
npm install puppeteer
  1. userDataDir 옵션 설정

puppeteer.launch() 함수를 사용할 때 userDataDir 옵션에 로컬 경로를 지정합니다. 이 경로에 Chromium의 사용자 프로필(캐시, 쿠키, 기록 등)이 저장되며, 다음 실행 시에도 동일한 경로를 사용하면 캐시가 유지됩니다.

const puppeteer = require('puppeteer');
const path = require('path');

// 캐시 및 사용자 프로필 데이터를 저장할 디렉토리 경로
// (프로젝트 폴더 내에 'my-chromium-profile'과 같이 지정하는 것이 좋습니다.)
const USER_DATA_DIR = path.join(__dirname, 'my-chromium-profile');

async function launchChromiumWithCache(url) {
  try {
    const browser = await puppeteer.launch({
      // Chromium 실행 파일 경로 (설정하지 않으면 Puppeteer가 다운로드한 것을 사용)
      // executablePath: '/path/to/chrome', 
      
      // 윈도우 창으로 띄우기 (headless: true가 기본값입니다)
      headless: false, 
      
      // ***가장 중요한 설정: 사용자 프로필 디렉토리 지정***
      userDataDir: USER_DATA_DIR,
    });

    const page = await browser.newPage();
    
    // 캐시 활성화 확인 (Puppeteer는 기본적으로 캐시가 활성화되어 있습니다.)
    // await page.setCacheEnabled(true); 

    await page.goto(url, { waitUntil: 'networkidle2' });
    console.log(`새 창을 띄우고 ${url}에 접속했습니다. 캐시는 ${USER_DATA_DIR}에 저장됩니다.`);

    // 브라우저를 닫지 않으면 캐시가 저장되지 않을 수 있으니,
    // 테스트 후에는 적절히 닫거나, 사용자에게 제어권을 넘기세요.
    // await browser.close(); 

  } catch (error) {
    console.error('Chromium 실행 중 오류 발생:', error);
  }
}

// 이 함수를 실행하여 새 창을 띄우고 캐시를 적용합니다.
launchChromiumWithCache('https://www.google.com');
  • 작동 원리
    첫 번째 실행: 지정한 USER_DATA_DIR 폴더가 없으면 새로 생성하고, 해당 폴더에 모든 사용자 데이터(디스크 캐시 포함)를 저장합니다.

두 번째 이후 실행: 동일한 userDataDir 경로를 지정하면, Chromium은 이 폴더에서 기존의 캐시와 프로필 데이터를 불러와 사용합니다. 이로 인해 이전에 방문한 페이지의 리소스는 캐시(Cache)에서 로드되어 로딩 속도가 빨라집니다.

  • 주의 사항
    userDataDir 관리: 이 폴더를 삭제하면 저장된 모든 캐시, 쿠키, 로그인 정보가 사라집니다.

프로세스 종료: 브라우저 인스턴스를 정상적으로 종료(browser.close())해야 캐시 데이터가 디스크에 안정적으로 기록됩니다.

크로미늄 명령줄 옵션: 때로는 disk-cache-size 같은 Chromium 명령줄 스위치를 args 옵션을 통해 Puppeteer에 전달하여 캐시 크기를 조절할 수도 있습니다.


await puppeteer.launch({
  // ...
  args: ['--disk-cache-size=20971520'] // 20MB로 캐시 크기 제한 (Bytes 단위)
});
profile
개발 정리 공간 - 업무일때도 있고, 공부일때도 있고...

0개의 댓글