我正在做一个项目,我需要广告请求的开始时间和广告完全加载的结束时间。这样我就可以计算广告的延迟时间。我正在使用google dfp和doubleclick。
更新: 我不想从像 Phantomjs 这样的外部库调用我的网站。我想要一些 javascript 解决方案,以便我可以编辑我的 js 文件并获得广告加载的延迟时间。谢谢
我正在做一个项目,我需要广告请求的开始时间和广告完全加载的结束时间。这样我就可以计算广告的延迟时间。我正在使用google dfp和doubleclick。
更新: 我不想从像 Phantomjs 这样的外部库调用我的网站。我想要一些 javascript 解决方案,以便我可以编辑我的 js 文件并获得广告加载的延迟时间。谢谢
尝试使用 PhantomJS。
这是一个无头浏览器。您可以像浏览器一样使用它,但可以通过编程方式从中获取信息。
描述基本方法,因为您没有提供任何代码。
在加载广告的函数中,设置一个具有当前毫秒数的变量(例如 startTime = Date.now())
然后根据您正在加载的媒体,您可以使用 onload 事件(用于图像)或 loadstart 和 loadeddata 事件用于视频、音频等。如果它是通过 XHR 调用的,那么您应该已经有一个加载事件来插入广告进入dom。再次抓取 Date.now(),并从中减去 starttime。
这是你的加载时间。
PhantomJS,CasperJS,或者写一个节点脚本。如果您在浏览器中执行此操作,则在页面加载时打开网络选项卡应该会告诉您请求花费了多长时间。
我建议使用 chrome 开发工具。在浏览器中使用cntr
+ shift
+并导航到时间线或网络i
您不能使用这些工具在您的 JS 代码中调用函数,但这是对您的速度的一个很好的看法。
您能否在发送请求之前获得当前时间,并在完成加载后立即获得当前时间并减去这些时间?
var timeAfter;
var timeBefore = new Date().getTime() / 1000;
//make requests //
function callBack(){
// Completely load ad//
timeAfter = new Date().getTime() / 1000;
}
var latency = timeAfter - timeBefore;
那是几秒钟,但你可以玩数学并得到毫秒。
您可能正在寻找类似chrome.webRequest API的东西。AppNexus 的 Headerbid Expert Chrome 扩展是一个很好的例子,它可以用来检查网络流量。您可能需要根据需求方为网络流量推出自己的模式匹配器,但也许您可以变得聪明并解析“doubleclick.net”流量以自动化该过程。 Mozilla和IE各有自己的做法。
如果插件不是您想要的,那么您可以简单地覆盖请求原型。您会倾向于在 javascript 测试工具(例如Sonin)中找到此类代码的示例。在那里,您通常还会找到计时事物的示例。