【发布时间】:2020-01-21 07:08:04
【问题描述】:
我正在开始优化,但我遇到了 Facebook 跟踪像素会导致加载时间缩短的问题: Waterfall Report
我的页面大约在 1.1 秒后完成,但像素直到将近一秒后才完成。
根据文档,我的像素脚本在头脑中。有什么办法可以加快速度吗?
【问题讨论】:
标签: javascript facebook frontend analytics
我正在开始优化,但我遇到了 Facebook 跟踪像素会导致加载时间缩短的问题: Waterfall Report
我的页面大约在 1.1 秒后完成,但像素直到将近一秒后才完成。
根据文档,我的像素脚本在头脑中。有什么办法可以加快速度吗?
【问题讨论】:
标签: javascript facebook frontend analytics
脚本可能不一定需要在头部,即使 Facebook 建议将其作为默认设置。只要在嵌入代码 sn-p 之前,您没有在任何地方显式调用 fbq 函数,它应该可以正常工作。
问题是,实际带来了多大的改进 - 嵌入代码已经写在了外面,实际的 SDK 是异步加载的。
嵌入 SDK 的 <script> 块可能会阻塞解析器 - 但您不能将 async 或 defer 放在内联脚本上,那样不会产生任何影响。将代码本身放入外部文件,然后使用 async 或 defer 嵌入它可能会在这方面有所帮助。
另一种选择是根本不使用脚本,而是使用图像替代跟踪您需要跟踪的所有事件。
https://developers.facebook.com/docs/facebook-pixel/advanced#installing-the-pixel-using-an-img-tag:
如果您需要使用轻量级实现来安装像素,可以使用
<img>标记进行安装。
“安装”在这里有点误导 - 这只会跟踪图像 URL 参数中指定的特定事件。另外,您必须自己进行所有跟踪,不再有自动化。您可以通过将图像直接嵌入到 HTML 代码中来跟踪简单的页面查看默认事件;如果您需要动态跟踪任何事件,那么您可以使用 JavaScript 创建一个新的Image 对象并分配适当的 URL,以便浏览器在后台获取它。
文档中提到了一些其他限制,如果您想尝试这条路线,请检查您是否可以接受这些限制。
如果您需要考虑其他因素,例如 GDPR 合规性 - 如果您使用图像进行跟踪,那么您也必须完全自行处理。 (SDK 有基于同意 cookie 暂停跟踪的方法,https://developers.facebook.com/docs/facebook-pixel/implementation/gdpr)
第三种选择可能是尝试自己修改嵌入 SDK 的代码。
如果 fbq 函数不存在,代码 sn-ps 将创建它。对它的任何后续调用都会将要跟踪的事件放在“堆栈”上,然后在 SDK 文件加载后对其进行处理。所以理论上,这可以被重写,例如,它不会插入 script 节点来立即加载 SDK,而是使用超时来延迟加载。这应该仍然以相同的方式工作(理论上,我没有明确测试过) - 只要事件被推送到提到的堆栈上,SDK 何时或如何加载都无关紧要。 (过大的超时可能会导致用户在任何跟踪发生之前就转到其他页面。)
最后但同样重要的是,我称之为“善业”选项 - 完全删除跟踪,以及随之而来的所有嗅探、分析和一般隐私侵犯 :-) 这可能不是每个人的选择,如果你在 Facebook 或类似网站上投放广告活动,它可能根本就不是一个。但如果这纯粹是为了“我想了解用户在我的网站上做什么”的目的,本地 Matomo 安装或类似的安装可能会同样好,甚至更好。
【讨论】:
我发现使用 Google 跟踪代码管理器加载像素适用于我的 WordPress 网站。 在 Pixel 之前,我的速度是 788 毫秒 添加像素后是2.12s 然后,通过GTM添加它是970ms
来源及更多详情:https://www.8webdesign.com.au/facebook-pixel-making-website-slower/
【讨论】:
查看这篇文章-https://www.shaytoder.com/improving-page-speed-when-using-facebook-pixel/
我会将脚本放在页脚中,这样不会影响“首次绘制”,但更重要的是——我将添加黄色标记线来包裹像素代码的“脚本”部分,如下所示——
【讨论】:
Content-Security-Policy 一起使用,您可以查看this article on how to implement Facebook Pixel securely。它利用 Shay 的解决方案和 CSP 的额外功能。
我知道您可能认为它没有关系,但是您是否尝试过在您的网站上启用延迟加载?将其添加到页脚或使用 Facebook for WordPress 插件也有帮助。
【讨论】: