puppeteer优化实践草稿
# 前言
开源库是通用的,对于业务来说,需要定制化
# 优化 Chromium 启动项
https://peter.sh/experiments/chromium-command-line-switches/
# 开启缓存
--user-data-dir
会耗费磁盘内存
# 优化Chromium执行流程
请求到达->启动Chromium->打开tab页->运行代码->关闭tab页->关闭Chromium->返回数据
=>
请求到达->连接Chromium->打开tab页->运行代码->关闭tab页->返回数据
官方并不建议这样做,因为一个tab页阻塞或者内存泄露会导致整个浏览器阻塞并Crash。万全的解决办法是定期重启程序,可参考php-fpm的做法,当请求1000次或者内存超过限制后重启对应的进程。
# 使用默认的 page 页面而不是新开页面,减少内存消耗
// const page = await browser.newPage();
const page = (await browser.pages())[0]
1
2
2
收益:
注意事项:
# 参考资料
- Puppeteer 性能优化与执行速度提升 (opens new window)
- Puppeteer自动化的性能优化与执行速度提升 (opens new window)
- 无头浏览器性能对比与 Puppeteer 的优化文档 (opens new window)
- playwright (opens new window)
- 跨平台的浏览器自动化工具Playwright简析 (opens new window)
- 使用 generic-pool 优化 puppeteer 并发问题 (opens new window)
- 结合项目来谈谈 Puppeteer (opens new window)
- Puppeteer 爬虫性能优化 (opens new window)
- 京喜前端自动化测试之路 (opens new window)
- 利用 cluster 优化 Puppeteer (opens new window)
- 可爱的Puppeteer使用小技巧 (opens new window)
- puppeteer优化小技巧 (opens new window)
- 使用 Puppeteer 搭建统一海报渲染服务 (opens new window)
https://www.chromium.org/developers/how-tos/run-chromium-with-flags
编辑 (opens new window)
上次更新: 2023/08/23, 09:32:05