【问题标题】:nodejs Puppeteer cachenodejs Puppeteer 缓存
【发布时间】:2020-02-02 18:52:19
【问题描述】:

我正在尝试使用本地缓存运行无头 Chromium,以便我之前访问的网页加载速度更快。
我正在使用 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();

第一次运行:console.log,缓存为空,显示为 false。
第二次运行:console.log 说的是真的。

直到这里一切都如预期的那样,但后来我将网址更改为(“https://google.com”)。
第一次运行:console.log,缓存为空,显示为 false。
第二次运行:console.log 为 false。

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

我也尝试使用 headless: false 并且 console.log 在第二次尝试时继续显示 false 但我注意到第二次尝试它实际上正在使用缓存,因为它会立即加载。

任何想法为什么?还是我做错了什么。谢谢。

【问题讨论】:

  • 有人知道吗?

标签: node.js puppeteer


【解决方案1】:

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

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

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 包)使用缓存。 Google 的网站可能就是这种情况,这就是为什么第二次加载仍然很快的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多