首页
开发技巧正文内容

使用Partytown无需性能损失地使用第三方脚本

2023年11月14日
阅读时长 2 分钟
阅读量 134
使用Partytown无需性能损失地使用第三方脚本

简介

Partytown是一个懒加载库,用于将资源密集型脚本转移到Web Worker中,远离主线程。它的目标是通过将主线程专用于您的代码,并将第三方脚本转移到Web Worker中,优化您的页面速度和Lighthouse评分,从而帮助加快网站速度。

即使您的网站遵循了当今的最佳实践,并且具有完美的Lighthouse评分,但添加第三方脚本很可能会抵消您的性能优势。

设置

根据Partytown的说法:

Partytown在其设置和配置方面与大多数Web开发库有很大的不同。在最低级别上,Partytown可以与纯HTML一起使用,这意味着它不需要成为构建过程的一部分,不需要打包工具,不需要特定的框架等等。因为它可以与任何HTML页面集成,所以它也更容易为几乎任何生态系统创建包装器组件或插件,例如Shopify、WordPress、Nextjs、Gatsby等等。

您可以使用以下命令安装该软件包:

yarn add @builder.io/partytown

示例

尽管Partytown可以与纯HTML一起使用,但在此示例中,我将向您展示如何在一个非常常见的前端库React或NextJS以及一个非常常见的第三方脚本Google Tag Manager(用于分析)中使用Partytown。

让我们先看一下我网站目前的性能(移动端):

您可以看到,尽管其他得分很高,但性能仅为69,Lighthouse指出第三方脚本是主要因素。因此,我们将立即使用Partytown进行优化。

首先,在根索引页面中,我们只需要为我们的脚本包含type="text/partytown"

<script
 async
 type="text/partytown"
 src="https://www.googletagmanager.com/gtag/js?id=G-BDYELQMSCB"
></script>
<script type="text/partytown" id="gtm">
 {`
   window.dataLayer = window.dataLayer || [];
   window.gtag = function gtag(){window.dataLayer.push(arguments);}
   gtag('js', new Date());
   gtag('config', 'G-BDYELQMSCB',{ 'debug_mode':true });
 `}
</script>

因为gtagwindow添加了一个全局变量,用户代码调用该变量以将数据发送到服务。

由于GTM实际上是在Web Worker中加载的,所以我们需要转发这些调用。forward配置用于设置应该被修补和转发的window变量。forward字符串值是要调用的函数:

<Partytown debug={true} forward={['gtag']} />

现在您可以安全地在应用程序中调用window.gtag

让我们看看在我们实施Partytown之后的得分:

性能得分现在是93,得到了极大的改善,并且Lighthouse给出的建议已经不再存在。

结论

第三方脚本在当今非常常见,特别是当网站需要像Hotjar、Google Analytics或Facebook Pixel这样的跟踪器和广告时。

我希望本文能够帮助您在很短的时间内改善您的网站性能。

免责声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

相关文章

探索多种软件架构模式及其实用应用
2024年11月22日19:06
本文深入探讨了多种软件架构模式,包括有界上下文、边车模式、发布-订阅模式、应用网关、微服务、命令职责分离(CQRS)等,介绍了它们的优点、使用场景以及具体应用实例。文章强调根据具体项目需求和团队能力选择最合适的架构,以构建高效和可维护的解决方案,同时展示了各架构模式间的综合应用,提供了丰富的案例和技术细节。
15个高级Python快捷键助您更快编程
2024年11月21日07:02
本文分享了 15 个高级的 Python 编程快捷键,包括上下文管理器、行内字典合并、函数参数解包、链式比较、dataclasses、海象运算符、反转列表、备忘录缓存、splitlines、enumerate、字典推导、zip 用于并行迭代、itertools.chain 扁平化列表、functools.partial 部分函数和 os.path 文件路径管理等,帮助开发者提高编程效率和代码简洁性。
揭示网页开发的 11 个迷思:停止相信这些误区
2024年11月19日22:05
网页开发充满误解,这篇博文针对11个常见迷思进行揭秘。包括网站开发后不需更新、需掌握所有技术、AI会取代开发者等。强调持续学习、专业化、用户体验的重要性,澄清误区如多任务处理的必要性和最新技术的必需性。文章提醒开发者注重实用而非追求完美代码,以务实态度面对开发工作。
你知道 CSS 的四种 Focus 样式吗?
2024年11月18日21:41
本文介绍了四种 CSS focus 样式::focus、:focus-visible、:focus-within 以及自定义的 :focus-visible-within,帮助提升网站用户体验。:focus 样式应用于被选中元素;:focus-visible 仅在键盘导航时显示;:focus-within 用于父元素;自定义 :focus-visible-within 结合两者效果。合理运用这些样式能使网站更方便键盘用户导航。
利用 Python 实现自动化图像裁剪:简单高效的工作流程
2024年11月11日20:49
使用 Python 和 OpenCV 自动裁剪图像,轻松实现 16:9 的完美构图。这个指南介绍了如何通过代码进行灰度化、模糊处理和边缘检测,最终识别出最重要的部分进行裁剪。特别适合需要批量处理图像的情况,节省大量时间。
每位资深前端开发人员都应了解的 TypeScript 高级概念
2024年11月11日02:07
资深前端开发者应了解 TypeScript 的高级概念,如联合类型、交叉类型、类型保护、条件类型、映射类型、模板字面量类型和递归类型。这些特性可提升代码的可维护性和可扩展性,确保在开发复杂应用时实现更高的类型安全性和效率。