【发布时间】:2018-07-23 12:52:38
【问题描述】:
我想在 puppeteer 中禁用缓存,谁能告诉我该怎么做?我找到了这个page.setCacheEnabled(enabled),但我不明白如何使用它。
我知道浏览器在没有缓存或 cookie 的情况下启动,但在我的情况下,浏览器始终在后台运行,因此需要不同的解决方案。
【问题讨论】:
标签: javascript node.js puppeteer
我想在 puppeteer 中禁用缓存,谁能告诉我该怎么做?我找到了这个page.setCacheEnabled(enabled),但我不明白如何使用它。
我知道浏览器在没有缓存或 cookie 的情况下启动,但在我的情况下,浏览器始终在后台运行,因此需要不同的解决方案。
【问题讨论】:
标签: javascript node.js puppeteer
您可以使用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();
这将使您在每一页上都有一个全新的开始。
【讨论】:
根据 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);
【讨论】:
每次浏览器启动都从干净的 HTTP 缓存开始,并且没有任何 cookie。
let browser = await puppeteer.launch(); // no cache, no cookies!
你可以试试这个。对于我没有缓存的情况,我正在使用它。
【讨论】:
userDataDir,那么这将不起作用。