【问题标题】:Headless chrome is taking too long to open any url as compared to full chrome与完整的 chrome 相比,无头 chrome 打开任何 url 的时间太长
【发布时间】:2017-12-07 12:24:43
【问题描述】:

当我尝试通过 Puppeteer 在 Headless chrome 中打开页面时,与 Full Chrome 相比,它需要很多时间。 我正在尝试在 1366*768 视口中打开普通网站以截取他们的屏幕截图,但在 Headless Chrome 中打开普通页面需要很长时间。 下面是我的测试结果,我使用 headless:trueheadless:false 标志打开 10 个网址

Headless:False(全铬)

  • google.com: 14279.508ms
  • hacks.mozilla.org: 16213.428ms
  • apple.com: 17465.563ms
  • gmail.com: 18820.810ms
  • dell.com: 19853.047ms
  • snapdeal.com: 20722.319ms
  • flipkart.com: 22994.769ms
  • microsoft.com: 23404.095ms
  • hp.com: 23963.416ms
  • amazon.com: 27175.416ms

Headless:true (Headless Chrome)

  • google.com: 157191.829ms
  • gmail.com: 159343.018ms
  • snapdeal.com: 309226.297ms
  • hacks.mozilla.org: 337393.393ms
  • microsoft.com: 369301.073ms
  • dell.com: 397798.479ms
  • apple.com: 398685.341ms
  • flipkart.com: 576905.928ms
  • hp.com: 1118683.968ms
  • amazon.com: 2372061.166ms

重现步骤:

  1. 通过设置 headless:true 和 headless:false 标志在 Headless Chrome 和 Full Chrome 中执行以下脚本。
  2. 两种方法之间的时间差很大,在 Headless Chrome 中它看起来像是卡了一段时间。

操作系统配置

Windows 7 Puppeteer 版本 0.13.0 I7 16GB 内存

代码:

var puppeteer = require('puppeteer');

async function capture(url) {
//console.log(url +': Started');
console.time(url);
const browser = await puppeteer.launch({headless:true});
const page = await browser.newPage();
page.setViewport({ width: 1366, height: 768 });
await page.goto('http://'+url, { waitUntil: 'networkidle2', timeout: 3000000 
});
await page.screenshot({path: url+'.jpg',fullPage: true});
browser.close();
console.timeEnd(url);

}

capture('hacks.mozilla.org');
capture('google.com');
capture('amazon.com');
capture('flipkart.com');
capture('snapdeal.com');
capture('dell.com');
capture('gmail.com');
capture('apple.com');
capture('microsoft.com');
capture('hp.com');

如果我遗漏了什么或者我们如何解决这个问题,请告诉我。

【问题讨论】:

    标签: google-chrome headless-browser puppeteer google-chrome-headless


    【解决方案1】:

    您在browser.close() 之前忘记了await。此外,我不认为此代码测试站点会像您希望的那样 - 您立即打开所有测试!我想这个版本就是你要找的:

    var puppeteer = require('puppeteer');
    
    async function capture(url) {
        console.time(url);
        const browser = await puppeteer.launch({ headless: true });
        const page = await browser.newPage();
        page.setViewport({ width: 1366, height: 768 });
        await page.goto('http://' + url, { waitUntil: 'networkidle2', timeout: 3000000 });
        await page.screenshot({ path: url + '.jpg', fullPage: true });
        await browser.close();
        console.timeEnd(url);
    }
    
    (async () => {
        await capture('hacks.mozilla.org');
        await capture('google.com');
        await capture('amazon.com');
        await capture('flipkart.com');
        await capture('snapdeal.com');
        await capture('dell.com');
        await capture('gmail.com');
        await capture('apple.com');
        await capture('microsoft.com');
        await capture('hp.com');
    })();
    

    我的 MacBook pro 2015 时代:

    headless: false

    hacks.mozilla.org: 4621.447ms
    google.com: 2834.090ms
    amazon.com: 9421.097ms
    flipkart.com: 16224.524ms
    snapdeal.com: 9883.090ms
    dell.com: 4675.504ms
    gmail.com: 5387.398ms
    apple.com: 4229.881ms
    microsoft.com: 4017.234ms
    hp.com: 6187.240ms
    

    headless: true

    hacks.mozilla.org: 3888.767ms
    google.com: 2220.519ms
    amazon.com: 5703.504ms
    flipkart.com: 17623.040ms
    snapdeal.com: 7237.338ms
    dell.com: 4267.592ms
    gmail.com: 3167.475ms
    apple.com: 3636.282ms
    microsoft.com: 4190.694ms
    hp.com: 5579.363ms
    

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2020-04-11
      • 2020-08-02
      • 2020-09-19
      • 1970-01-01
      相关资源
      最近更新 更多