我想知道如何使用 puppeteer 缓存文件,所以我不必在脚本启动时再次加载它,假设我有这个脚本:
async function run () {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://www.amazon.com/");
browser.close();
}
run();
好吧,如果我想保存 html 以便不必再次加载它,我该怎么做?我研究发现How can I disable cache in puppeteer?但是我在答案和问题中都没有找到很多细节,有人可以向我解释如何将 html 保存在缓存中吗?
最佳答案
Puppeteer 在后台使用 Chrome(或 FireFox)浏览器,以防万一:
await page.setCacheEnabled(false);
await pageSession.send('Network.setCacheDisabled', { cacheDisabled: true });
资源将已被缓存,您无需手动执行任何操作。但是,如果您想在缓存页面上进行测试,您需要在测试之前对其进行预热,就像在示例中一样:
async function warmingBrowser(url: URL, pageInstance: Page) {
await pageInstance.goto(url.href, { waitUntil: 'networkidle0' });
await pageInstance.close();
}
代码取自perfrunner如果你想让它完全脱机工作——Puppeteer 对此无济于事,你需要使用 ServiceWorker 实现你自己的缓存策略。 .
但是这一步有一些陷阱(确切地说是缓存和使缓存无效)所以要注意。
关于javascript - 如何使用 puppeteer 缓存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67857426/