如何减少木偶师的规模



我使用Puppeteer进行网页抓取,使用我制作的小型NodeJs web应用程序。这个web应用程序托管在Heroku上,使用jontewks/puppeteer-heroku-buildpack来工作。

我面临的问题是,我的应用程序不再构建,因为Heroku的大小限制:

Compiled slug size: 537.4M is too large (max is 500M).

我已经尝试了几种方法:

  • 使用Firefox代替Chromium
    • 这是一个'不去';因为木偶/firefox当前的一个问题:
  • 通过删除文件interactive_ui_tests.exe来减小Chromium的大小
    • 我不能这样做,因为Heroku使用Linux而不是Windows,这个文件不存在于Linux Chromium发行版
  • 使用headless_shell代替铬
    • 我被困在这个(像这里),因为我不明白如何使它工作。我在这里找到了要使用的文件,但我面临着与2018年7月9日
    • 评论相同的问题。
  • 使用剧作家而不是木偶
    • 这可能是一个解决方案,但我使用的东西像puppeteer-extrapuppeteer-extra-plugin-stealth,所以它打扰我改变
  • 通过删除文件夹locales来减小Chromium的大小
    • 它有一点帮助,但不是很大
  • 使用旧版本的Puppeteer (2.1.1),它使用的是旧版本的Chromium,稍微轻一些
    • 目前,这是我唯一有效的解决方案
  • 使用heroku repo:gc -a myappheroku builds:cache:purge -a myapp

我最后三分减少我的鼻涕虫490M的大小。所以我的应用程序是工作的,但它不是很好(近期)的未来,像有一个最新的木偶版本。

所以我在这里寻求帮助,因为我现在没有任何更多的想法。

非常感谢您的帮助🙏

最后,我使用了剧作家。

使用这个Buildpack,我的应用程序的构建只有250Mb!

以下是我遵循的几个步骤:
  • 安装NPMplaywright-chromium只下载Chromium.

  • 在Heroku中设置PLAYWRIGHT_BUILDPACK_BROWSERSenv变量为chromium,只安装Chromium依赖项。

  • 在Heroku中将此构建包放在Node.js构建包之前。

  • 使用这个技巧可以使用来自puppeteer-stealth大部分的东西。

  • 如果你愿意,你可以像在Puppeteer:

await page.route('**/*', route => ([
'stylesheet',
'image',
'media',
'font',
// 'script',
'texttrack',
'xhr',
'fetch',
'eventsource',
'websocket',
'manifest',
'other',
].includes(route.request().resourceType()) ? route.abort() : route.continue()))

最新更新