web-dev-qa-db-ja.com

Puppeteerのキャッシュを無効にするにはどうすればよいですか?

Puppeteerのキャッシュを無効にしたいのですが、どうすればよいのか教えてもらえますか?これはpage.setCacheEnabled(enabled)でしたが、使い方がわかりませんでした。

ブラウザはキャッシュやCookieなしで起動されることを認識していますが、私の場合、ブラウザは常にバックグラウンドで実行されているため、別のソリューションが必要です。

7
Nagarjun Prasad

人形遣いのドキュメントによれば、await page.setCacheEnabled(enabled)を使用できます

これは12月に追加されました。 Git Hubの問題#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);
8
Rippo

cdpSession.send() を使用してキャッシュを無効にすることができます:

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

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

または、より読みやすい page.setCacheEnabled() を使用できます。

_await page.setCacheEnabled(false);
_
4
Grant Miller

セッションの分離が必要な場合は、const context = await browser.createIncognitoBrowserContext(); const page = await context.newPage();もあり、各ページから新たに開始できます。

3
reflog

ブラウザの起動はすべて、クリーンなHTTPキャッシュから始まり、Cookieはありません。

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

これを試してみてください。キャッシュなしの場合は、これを使用しています。

1
syam