为什么 facebook 的转换像素会加载多个 JavaScript 文件?
Why does facebook's conversion pixel load multiple JavaScript files?
如果我访问安装了 facebook 转换像素的网站(例如 https://www.walmart.com/
),我注意到像素加载了几个不同的 JavaScript 文件。
第一个是https://connect.facebook.net/en_US/fbevents.js
。
第二个是
https://connect.facebook.net/signals/config/168539446845503?v=2.9.2&r=stable
。这似乎有一些用户特定的配置数据烘焙到文件中。
第三个是https://connect.facebook.net/signals/plugins/inferredEvents.js?v=2.9.2
我不明白的是,为什么 Facebook 不简单地将所有这些合并到一个请求中,例如 https://connect.facebook.net/en_US/168539446845503/fbevents.js?v=2.9.2&r=stable
,然后简单地 return 一个包含所有内容的文件?这将能够完成转换像素现在所做的一切,但需要 1 个请求而不是 3 个。
由于该页面对其加载提出了一百多个请求,因此加载 1 个 javascript 文件而不是 3 个文件不会有显着改进。
Facebook为了更好的设计选择了分成3个文件,大概是:
- 1 个通用库:fbevents.js
- 1 更具体:inferredEvents.js,使用第一个
- 1 个包含生成代码的文件,可能特定于商家 168539446845503(沃尔玛?)
这种碎片化使代码维护更容易(测试、可重用性、错误修复)。
最后,通用文件 fbevents.js 和 inferredEvents.js 可以由浏览器缓存并在其他网站上重复使用。这是一种优化,可能比你建议的更好。
与几年前相比,对同一个来源的多个资源请求远不是一个问题:
- 网速更快。
- 延迟更短(在 5G 手机上最明显)。
- HTTP/3 protocol 有许多改进,有助于同时从同一服务器多路复用文件。
- 浏览器不会像过去那样严格限制站点的活动连接数(无论如何 HTTP/3 都没有关系)。
Facebook 使用 HTTP/3,您可以在此处看到:
如果我访问安装了 facebook 转换像素的网站(例如 https://www.walmart.com/
),我注意到像素加载了几个不同的 JavaScript 文件。
第一个是https://connect.facebook.net/en_US/fbevents.js
。
第二个是
https://connect.facebook.net/signals/config/168539446845503?v=2.9.2&r=stable
。这似乎有一些用户特定的配置数据烘焙到文件中。
第三个是https://connect.facebook.net/signals/plugins/inferredEvents.js?v=2.9.2
我不明白的是,为什么 Facebook 不简单地将所有这些合并到一个请求中,例如 https://connect.facebook.net/en_US/168539446845503/fbevents.js?v=2.9.2&r=stable
,然后简单地 return 一个包含所有内容的文件?这将能够完成转换像素现在所做的一切,但需要 1 个请求而不是 3 个。
由于该页面对其加载提出了一百多个请求,因此加载 1 个 javascript 文件而不是 3 个文件不会有显着改进。
Facebook为了更好的设计选择了分成3个文件,大概是:
- 1 个通用库:fbevents.js
- 1 更具体:inferredEvents.js,使用第一个
- 1 个包含生成代码的文件,可能特定于商家 168539446845503(沃尔玛?)
这种碎片化使代码维护更容易(测试、可重用性、错误修复)。
最后,通用文件 fbevents.js 和 inferredEvents.js 可以由浏览器缓存并在其他网站上重复使用。这是一种优化,可能比你建议的更好。
与几年前相比,对同一个来源的多个资源请求远不是一个问题:
- 网速更快。
- 延迟更短(在 5G 手机上最明显)。
- HTTP/3 protocol 有许多改进,有助于同时从同一服务器多路复用文件。
- 浏览器不会像过去那样严格限制站点的活动连接数(无论如何 HTTP/3 都没有关系)。
Facebook 使用 HTTP/3,您可以在此处看到: