npm install puppeteer
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');
두 번째 이후 실행: 동일한 userDataDir 경로를 지정하면, Chromium은 이 폴더에서 기존의 캐시와 프로필 데이터를 불러와 사용합니다. 이로 인해 이전에 방문한 페이지의 리소스는 캐시(Cache)에서 로드되어 로딩 속도가 빨라집니다.
프로세스 종료: 브라우저 인스턴스를 정상적으로 종료(browser.close())해야 캐시 데이터가 디스크에 안정적으로 기록됩니다.
크로미늄 명령줄 옵션: 때로는 disk-cache-size 같은 Chromium 명령줄 스위치를 args 옵션을 통해 Puppeteer에 전달하여 캐시 크기를 조절할 수도 있습니다.
await puppeteer.launch({
// ...
args: ['--disk-cache-size=20971520'] // 20MB로 캐시 크기 제한 (Bytes 단위)
});