Javascript Marketo-Munchkin同步请求损害了JS性能

Javascript Marketo-Munchkin同步请求损害了JS性能,javascript,marketo,Javascript,Marketo,最近,我注意到我网站的javascript代码中存在一些性能问题。经过一些分析,我发现问题在于我用来跟踪事件的Marketo Munchking代码。看起来最近他们更改了JS代码,为每个调用Munchkin.munchkinFunction发送同步http请求。相关的代码片段是: a=new XMLHttpRequest;a.open("GET",b,!1); ... a.send(); 我已经在Marketo开了一张罚单,但在他们修复代码之前,我正在寻找一个解决办法。我想到了几个: 有没有办

最近,我注意到我网站的javascript代码中存在一些性能问题。经过一些分析,我发现问题在于我用来跟踪事件的Marketo Munchking代码。看起来最近他们更改了JS代码,为每个调用Munchkin.munchkinFunction发送同步http请求。相关的代码片段是:

a=new XMLHttpRequest;a.open("GET",b,!1); ... a.send();
我已经在Marketo开了一张罚单,但在他们修复代码之前,我正在寻找一个解决办法。我想到了几个:

有没有办法钩住他们的js代码来强制XMLHttpRequest是异步的? 直接引用他们脚本的旧版本是安全的,例如//munchkin.marketo.net/143/munchkin.js。我测试了一下,效果很好,但也许我遗漏了什么。 还有其他解决办法吗?任何想法都值得赞赏

更新:

刚刚收到Marketo支持部门的回复。他们承认这些呼叫确实是同步的,但他们声称这是避免信息丢失的唯一方法。我想他们会想到在重定向之前调用Munchkin.Munchkin函数的情况。我不同意他们的观点,我会要求他们提供一个替代方案。与此同时,我正在使用他们的旧版本代码

更新2:


他们的支持团队又回复说我的想法很好,但他们现在无法实现,他们希望有一天有一个开发人员会来接他们。。。不管怎样,我已经创建了一个。

您确定要使用异步版本的跟踪代码吗?如果您查看Marketo管理员,在跟踪代码下,有一个下拉列表选择跟踪代码类型-确保这是异步的,然后在您的站点中使用特定的脚本块

此外,如果您查看管理中的“宝箱”部分,可以选择启用beta Munchkin代码-如果上述操作不起作用,可以尝试启用该代码。

2015年10月更新:此功能现已记录在案

我刚刚查看了新版本的Munchkin代码150,发现以下未记录的参数:

Munchkin.init('XXXXXX', {asyncOnly: true});

我试过了,它成功了——所有HTTP请求现在都是异步的。

当然是异步代码。我将尝试测试版代码,但我刚刚收到Marketo支持部门的回复。请看我的最新问题。嗯,这是一个有点捉摸不透的问题,我们必须小心那个问题。祝你好运您不能从Marketo管理工具中选择异步跟踪代码选项。它说它是异步的,但实际上不是。它仍将尝试将链接单击视为同步调用,这也不会遵守文档中指定的默认350毫秒单击时间超时。必须显式指定asyncOnly:true。他们的JavaScript代码片段让我们的web属性在用户点击链接时花费6秒以上的时间,以及在我们尝试在新选项卡中打开链接时触发弹出窗口阻止程序。我也偶然发现了这一点,但我似乎找不到将其设为false vs true的利弊。显然,您的请求现在是真正异步的,但是为什么这里的默认值为false呢?