Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

    • 工程效率

    • 编译构建

    • 工程管理

    • JS 模块化

    • CSS 模块化

    • 工程质量

    • 前端测试

      • E2E

        • Puppeteer

          • chromium sandbox 配置
          • puppeteer 内部执行过程
          • puppeteer 升级 playwright 实践
          • puppeteer 在 Electron 上的实践
          • puppeteer 检测与绕过
          • puppeteer优化实践
            • 前言
            • 优化 Chromium 启动项
              • 开启缓存
            • 优化Chromium执行流程
              • 使用默认的 page 页面而不是新开页面,减少内存消耗
            • 参考资料
          • puppeteer笔记
          • 插件系统 与 puppeteer-extra 浅析
          • puppeteer初探-测试webrtc
        • 浅谈前端自动化测试
        • 浏览器自动化工具
      • 单元测试

    • CI&CD

  • 应用基础

  • 专业领域

  • 业务场景

  • 大前端
  • 工程能力
  • 前端测试
  • E2E
  • Puppeteer
gahing
2023-04-10
目录

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

收益:

注意事项:

# 参考资料

  • 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)
上次更新: 2024/09/01, 23:56:56
puppeteer 检测与绕过
puppeteer笔记

← puppeteer 检测与绕过 puppeteer笔记→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式