nodejs Puppeteer cache



我正在尝试使用本地缓存运行无头铬,以便我访问过的网页加载速度更快。
我正在使用userDataDir:"C:\Users\user\AppData\Local\Chromium\User Data"作为本地缓存,并检查它是否加载了带有console.log(response.fromCache(((的缓存。

const puppeteer = require('puppeteer');
async function test() {
const browser = await puppeteer.launch({
headless: true, 
args: ['--no-sandbox'], 
userDataDir: "C:\Users\user\AppData\Local\Chromium\User Data"
});
const page = await browser.newPage();
const response = await page.goto('https://example.com');
console.log(response.fromCache());
await browser.close();
}
test();

首次运行:控制台.log,缓存为空,显示 false。
第二次运行:控制台.log说是真的。

直到这里一切都符合预期,但后来我将 url 更改为 ("https://google.com"(。
首次运行:控制台.log,缓存为空,显示 false。
第二次运行:控制台.log说假。

我尝试了多个 url,直到现在只有("https://example.com"(一直在使用缓存的浏览器。

我还尝试使用无头:false 和控制台.log在第二次尝试时继续说 false,但我注意到第二次尝试它实际上是在使用缓存,因为它会立即加载。

知道为什么吗?还是我做错了什么。谢谢。

Puppeteer 可能只是遵循这里的 HTTP 缓存规则。

截至 2020 年 7 月 23 日,https://example.com 将返回以下缓存标头:

Cache-Control
max-age=604800
Etag
"3147526947+gzip"
Expires
Thu, 30 Jul 2020 13:47:37 GMT
Last-Modified
Thu, 17 Oct 2019 07:18:26 GMT

这说明网页可以缓存一段时间。

同时,https://google.com 返回:

cache-control
private, max-age=0
expires
-1

这表示不应缓存网页。

网站不缓存其顶级 HTML 页面,只对图像、CSS 和 JS 捆绑包等静态资产使用缓存是相当常见的。谷歌的网站很可能就是这种情况,这就是为什么第二次加载仍然很快的原因。

最新更新