如何在puppeteer中禁用缓存?

Nag*_*sad 7 javascript node.js puppeteer

我想在puppeteer中禁用缓存,有人可以告诉我该怎么做吗?我找到了,page.setCacheEnabled(enabled)但是我不明白如何使用它。

我知道浏览器是在没有缓存或Cookie的情况下启动的,但就我而言,浏览器始终在后台运行,因此需要其他解决方案。

ref*_*log 9

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

  • 嘿,这真是个好提示!我需要用独立的 cookie 开始每个页面 (3认同)

Rip*_*ppo 8

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

这是在12月添加的。请参阅Git Hub问题#1609

如果您查看提交更改,则有一个测试,例如

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);
Run Code Online (Sandbox Code Playgroud)


Gra*_*ler 7

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

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

await client.send('Network.setCacheDisabled', {
  cacheDisabled: true,
});
Run Code Online (Sandbox Code Playgroud)

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

await page.setCacheEnabled(false);
Run Code Online (Sandbox Code Playgroud)