2

我正在做一个项目,我需要广告请求的开始时间和广告完全加载的结束时间。这样我就可以计算广告的延迟时间。我正在使用google dfpdoubleclick

更新: 我不想从像 Phantomjs 这样的外部库调用我的网站。我想要一些 javascript 解决方案,以便我可以编辑我的 js 文件并获得广告加载的延迟时间。谢谢

4

7 回答 7

3

尝试使用 PhantomJS。

这是一个无头浏览器。您可以像浏览器一样使用它,但可以通过编程方式从中获取信息。

于 2016-09-19T17:31:07.610 回答
2

描述基本方法,因为您没有提供任何代码。

在加载广告的函数中,设置一个具有当前毫秒数的变量(例如 startTime = Date.now())

然后根据您正在加载的媒体,您可以使用 onload 事件(用于图像)或 loadstart 和 loadeddata 事件用于视频、音频等。如果它是通过 XHR 调用的,那么您应该已经有一个加载事件来插入广告进入dom。再次抓取 Date.now(),并从中减去 starttime。

这是你的加载时间。

于 2016-09-21T14:00:18.750 回答
2

PhantomJS,CasperJS,或者写一个节点脚本。如果您在浏览器中执行此操作,则在页面加载时打开网络选项卡应该会告诉您请求花费了多长时间。

于 2016-09-19T18:13:04.730 回答
1

我建议使用 chrome 开发工具。在浏览器中使用cntr+ shift+并导航到时间线或网络i

您不能使用这些工具在您的 JS 代码中调用函数,但这是对您的速度的一个很好的看法。

于 2016-09-22T09:14:33.990 回答
1

您能否在发送请求之前获得当前时间,并在完成加载后立即获得当前时间并减去这些时间?

var timeAfter;
var timeBefore = new Date().getTime() / 1000;
//make requests //
function callBack(){
    // Completely load ad//
    timeAfter = new Date().getTime() / 1000;
}
var latency = timeAfter - timeBefore;

那是几秒钟,但你可以玩数学并得到毫秒。

于 2016-09-25T22:55:41.403 回答
0

您可能正在寻找类似chrome.webRequest API的东西。AppNexus 的 Headerbid Expert Chrome 扩展是一个很好的例子,它可以用来检查网络流量。您可能需要根据需求方为网络流量推出自己的模式匹配器,但也许您可以变得聪明并解析“doubleclick.net”流量以自动化该过程。 MozillaIE各有自己的做法。

如果插件不是您想要的,那么您可以简单地覆盖请求原型您会倾向于在 javascript 测试工具(例如Sonin)中找到此类代码的示例。在那里,您通常还会找到计时事物的示例。

于 2016-09-26T06:28:22.010 回答
0

这个问题的答案已经可用堆栈本身。

请参考这些链接。这些可能是问题的答案。

在 JavaScript 中计算页面加载时间

JavaScript 的页面加载时间

衡量客户端页面加载时间的最佳方法是什么?

于 2016-09-26T05:34:02.477 回答