这个问题只能在Safari浏览器上重现。Mac上的Chrome似乎没有受到影响。Windows的Safari显示刷新问题,但似乎并没有开始hoarding memory,尽管WebKit2WebProcess.ee进程的CPU使用率一直维持在相当高的水平,直到窗口关闭。我尝试逐个删除EDM链接中添加的utm_*参数,直到确认问题仅由utm_source本身引起,然后发现我应该意识到这是GA寻找的主要标签。更有趣的是,删除GA并没有解决这个问题,我注释掉了创建脚本标签的代码(值得一提的是,使用的脚本不是通常的www.google-analytics.com/ga.js,而是stats.g.doubleclick.net/dc.js中的DFP脚本)。
解决此问题的方法是不加载GPT - 注释掉以下代码:
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function() {
var gads = document.createElement("script");
gads.async = true;
gads.type = "text/javascript";
var useSSL = "https:" == document.location.protocol;
gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js";
var node =document.getElementsByTagName("script")[0];
node.parentNode.insertBefore(gads, node);
})();
我相信GPT正在检测utm_source参数并尝试执行某些操作,但在Safari上由于某些原因失败。不幸的是,GPT代码被混淆了,我很难通过阅读代码找到问题。因此,我希望能够在Safari开发者控制台中,在页面刷新之前获取调用堆栈,或者使用其他调试技术。也许有人遇到过这个问题?
据我所知,唯一关心这些参数的脚本是Google Analytics,所以我也愿意听取别人的意见。
编辑:我尝试取消注释GPT脚本标记,然后注释页面上我们向其中推送命令(使用
googletag.cmd.push()
)的地方,以防我们使用它引起问题(我们基本上只定义然后发布8个插槽,然后启用广告服务)。但是注释此命令未解决问题,似乎与已加载GPT有关。