2014-09-11 87 views
7

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

a=new XMLHttpRequest;a.open("GET",b,!1); ... a.send(); 

我已经打开了的Marketo票,但直到他们解决他们的代码,我正在寻找一个解决办法。我想到了几个:

  1. 有没有办法钩住他们的js代码强制XMLHttpRequest是异步?
  2. 直接引用其旧版本的脚本是安全的,例如//munchkin.marketo.net/143/munchkin.js。我测试了它,它可以工作,但也许我错过了一些东西。

是否还有其他解决方法?任何想法是赞赏。

UPDATE

刚从的Marketo支持的响应。他们承认这些电话确实是同步的,但他们声称这是不失信息的唯一方法。我想他们会想到在重定向之前拨打Munchkin.munchkinFunction的情况。我不同意他们,并会要求他们提供替代方案。同时,我正在使用他们的代码的旧版本。

更新#2

得到了他们的支持团队,说我的想法是好的,但也不能马上落实他们,他们希望开发商一个接他们,另一响应总有一天......无论如何我已经创建了一个idea in the Marketo community

回答

11

更新(2015年10月):此功能现在记录在here

我刚走到芒奇金码(150)的新版本,发现如下无证参数:

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

我尝试过了,它的工作 - 现在所有的HTTP请求是异步。

+0

谢谢,这些错误令人沮丧! – Thomas 2015-07-22 20:30:16

+0

我偶然发现了这一点,但我似乎无法找到它的优缺点,因为它是虚假的与真实的。显然你的请求现在真的是异步的,但为什么这里的默认值是false? – kamelkev 2017-08-24 00:20:04

0

您确定要使用异步版本的跟踪代码吗?如果您查看Marketo管理员,在跟踪代码下,有一个下拉框可选择跟踪代码类型 - 确保它处于异步状态,然后在您的站点中使用该特定脚本块。另外,如果您在管理员的Treasure Chest部分下看,则可以启用测试版Munchkin代码 - 如果以上操作无效,可以启用尝试。

+0

绝对是异步代码。我会尝试测试代码,但我刚刚获得了Marketo支持的响应。看到我更新的问题。 – Tzach 2014-09-14 12:03:27

+0

嗯,这是一个小问题,必须小心那个。祝你好运! – michaelroper 2014-09-14 14:20:16

+0

您无法从Marketo管理工具中选择异步跟踪代码选项。据说它是异步的,但事实并非如此。它仍会尝试将链接点击视为同步调用,这也不会考虑其文档中指定的默认350毫秒“clickTime”超时。你必须明确指定“asyncOnly:true”。他们的JavaScript代码段让我们的网络媒体资源每当用户点击链接时触发6秒以上,并且每当我们尝试在新标签页中打开链接时触发弹出窗口拦截器。 – user1212241 2017-02-17 14:29:50