elementui 样式渲染的慢_对 Chrome Headless 渲染的极致优化

本文介绍了针对Chrome Headless渲染性能优化的过程,特别是在处理ElementUI样式和PDF生成方面。作者通过一系列优化策略,将渲染时间从40秒降低到理想范围,包括延迟渲染、避免频繁的Recalculate Style以及优化DOM操作等方法。
摘要由CSDN通过智能技术生成

5c24c53fc229b8151f4c664b72f6cc52.png

推荐语:

作者是我组一位前端大佬, 对安全,算法, 性能优化,都有深刻的研究和实践。

本文内容来自他上个月的一个真实需求,做到了极致的性能优化,希望本文内容对你有所启发。

作者:Rex Zeng

原文链接:https://blog.rexskz.info/awb-tool-ultimate-optimization-for-chrome-headless.html

背景

有些同学对面单工具这个项目应该不算陌生,因为之前我已经写过几篇跟它相关的文章了。

它的基础功能无非就是画面单:如果你从 Shopee 上买了点东西,那么快递上面贴的面单就是用这个工具画出来的。

可能是这工具用起来比较方便,随着业务的扩张,一些不是面单的奇奇怪怪的东西也开始切换到面单工具上,例如采购系统的合同(更像是 Word 文件)、仓库的条形码(用了特殊纸张)、拣货单(可以理解成外卖单),这就对面单工具的可扩展性提出了极高的要求。

不过这不是本文的重点,之后再专门写文章好了。

5c1f07e8ae5297894b63e62e853595d7.png

我之前写过一篇文章,讲的是如何优化编辑器的渲染效率(500 个元素从 1 s 降到 100 ms),这个结果我已经很满意了。

但是随着大量的系统开始使用这个工具,它遇到了另外一个性能瓶颈——服务端渲染太慢了……

问题解析

一张面单,从编辑器的画布上,到生成一个 PDF,中间究竟经历了什么?

  1. 前端将编辑器中的东西转换为模板语言(我们选择了 Django / pongo2);

  2. 第三方系统通过 API Call 发了一个请求,要求使用某一个模板,并提供了所有必要的数据(订单号、商品详情等);

  3. 后端对数据做了校验之后,使用模板引擎生成一份面单的 HTML;

  4. 后端使用 Chrome Headless 打开刚生成的 HTML,并将其打印为 PDF;

  5. 后端将 PDF 返回给第三方系统&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值