如何禁用 puppeteer 中的缓存?

How can I disable cache in puppeteer?

我想在 puppeteer 中禁用缓存,谁能告诉我该怎么做?我找到了这个 page.setCacheEnabled(enabled) 但我不明白如何使用它。

我知道浏览器是在没有缓存或 cookie 的情况下启动的,但在我的情况下,浏览器总是 运行 在后台,因此需要一个不同的解决方案。

每个浏览器启动都以干净的 HTTP 缓存开始,没有任何 cookie。

let browser = await puppeteer.launch(); // no cache, no cookies!

你可以试试这个。对于没有缓存的情况,我正在使用它。

根据 puppeteer 文档,您可以使用 await page.setCacheEnabled(enabled)

这是在 12 月添加的。 See Git Hub issue #1609

如果您查看 commit changes 有一个测试,例如

await page.goto(SOMEURL);

await page.reload({waitUntil: 'networkidle2'});
expect(responses.get('one-style.css').fromCache()).toBe(true);

await page.setCacheEnabled(false);
await page.reload({waitUntil: 'networkidle2'});
expect(responses.get('one-style.css').fromCache()).toBe(false);

您可以使用cdpSession.send()来禁用缓存:

const client = await page.target().createCDPSession();

await client.send('Network.setCacheDisabled', {
  cacheDisabled: true,
});

或者,您可以使用更具可读性的 page.setCacheEnabled():

await page.setCacheEnabled(false);

如果要会话隔离,还有: const context = await browser.createIncognitoBrowserContext(); const page = await context.newPage(); 这将使您在每一页上都有一个全新的开始。