Adobe 插件:getPageLoadTime

重要

此插件由 Adobe Consulting 团队提供,旨在帮助您从 Adobe Analytics 中获取更多的价值。Adobe 客户关怀团队不提供对此插件的支持,包括安装或疑难解答。如果您需要关于此插件的帮助,请与贵组织的帐户管理员联系。他们可以为您安排与顾问的答疑会,以便您向顾问寻求帮助。

getPageLoadTime 插件使用 JavaScript 性能对象来让您可以测量页面完全加载所需的时间。如果您想要测量页面加载所需的时间,Adobe 建议您使用此插件。

在Adobe Experience Platform中使用标记安装插件

Adobe 提供了一个扩展,通过该扩展,您可以使用一些最常用的插件。

  1. 使用您的Adobe ID凭据登录到数据收集UI
  2. 单击所需的属性。
  3. 转到扩展选项卡,然后单击目录按钮
  4. 安装并发布常用 Analytics 插件扩展
  5. 如果还没有任何扩展,请使用以下配置创建一个标签为“初始化插件”的规则:
    • 条件:无
    • 事件:核心 - 已加载的库(页面顶部)
  6. 使用以下配置向上述规则添加操作:
    • 扩展:常用 Analytics 插件
    • 操作类型:初始化 getPageLoadTime
  7. 保存并发布对上述规则所做的更改。

使用 自定义代码编辑器安装此插件

如果您不想使用插件扩展,则可以使用自定义代码编辑器。

  1. 使用您的Adobe ID凭据登录到数据收集UI
  2. 单击所需的属性。
  3. 转到扩展选项卡,然后单击 Adobe Analytics 扩展下的配置按钮。
  4. 展开使用自定义代码配置跟踪折叠面板,这会显示打开编辑器按钮。
  5. 打开自定义代码编辑器,并将下面提供的插件代码粘贴到编辑窗口中。
  6. 保存并发布对此 Analytics 扩展所做的更改。

使用 AppMeasurement 安装此插件

在实例化(使用 s_gi)Analytics 跟踪对象后,将以下代码复制并粘贴到 AppMeasurement 文件中的任意位置。在您的实施中保留代码的注释和版本号可帮助 Adobe 对任何潜在问题进行疑难解答。

/******************************************* BEGIN CODE TO DEPLOY *******************************************/
/* Adobe Consulting Plugin: getPageLoadTime v2.0.1 with performanceWriteFull, performanceWritePart, performanceCheck, and performanceRead helper functions (Requires AppMeasurement and the p_fo plugin) */
function getPageLoadTime(){function l(){var a=performance.timing;if(0<a.loadEventEnd&&(clearInterval(window.pi),""===window.cookieRead("s_plt"))){var b=window,d=b.cookieWrite;var c=a.loadEventEnd;var f=a.navigationStart;c=0<=c&&0<=f?6E4>c-f&&0<=c-f?parseFloat((c-f)/1E3).toFixed(2):60:void 0;d.call(b,"s_plt",c);window.cookieWrite("s_pltp",window.pageName)}window.ptc=a.loadEventEnd}if(arguments&&"-v"===arguments[0])return{plugin:"getPageLoadTime",version:"2.0.1"};var e=function(){if("undefined"!==typeof window.s_c_il)for(var a=0,b;a<window.s_c_il.length;a++)if(b=window.s_c_il[a],b._c&&"s_c"===b._c)return b}();"undefined"!==typeof e&&(e.contextData.getPageLoadTime="2.0.1");window.pageName="undefined"!==typeof e&&e.pageName||"";window.cookieWrite=window.cookieWrite||function(a,b,d){if("string"===typeof a){var c=window.location.hostname,f=window.location.hostname.split(".").length-1;if(c&&!/^[0-9.]+$/.test(c)){f=2<f?f:2;var h=c.lastIndexOf(".");if(0<=h){for(;0<=h&&1<f;)h=c.lastIndexOf(".",h-1),f--;h=0<h?c.substring(h):c}}g=h;b="undefined"!==typeof b?""+b:"";if(d||""===b)if(""===b&&(d=-60),"number"===typeof d){var k=new Date;k.setTime(k.getTime()+6E4*d)}else k=d;return a&&(document.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+"; path=/;"+(d?" expires="+k.toUTCString()+";":"")+(g?" domain="+g+";":""),"undefined"!==typeof cookieRead)?cookieRead(a)===b:!1}};window.cookieRead=window.cookieRead||function(a){if("string"===typeof a)a=encodeURIComponent(a);else return"";var b=" "+document.cookie,d=b.indexOf(" "+a+"="),c=0>d?d:b.indexOf(";",d);return(a=0>d?"":decodeURIComponent(b.substring(d+2+a.length,0>c?b.length:c)))?a:""};window.p_fo=window.p_fo||function(a){window.__fo||(window.__fo={});if(window.__fo[a])return!1;window.__fo[a]={};return!0};"undefined"!==typeof performance&&p_fo("performance")&&((e=performance,e.clearResourceTimings(),""!==window.cookieRead("s_plt")&&(0<e.timing.loadEventEnd&&clearInterval(window.pi),this._pltLoadTime=window.cookieRead("s_plt"),this._pltPreviousPage=window.cookieRead("s_pltp"),window.cookieWrite("s_plt",""),window.cookieWrite("s_pltp","")),0===e.timing.loadEventEnd)?window.pi=setInterval(function(){l()},250):0<e.timing.loadEventEnd&&(window.ptc?window.ptc===e.timing.loadEventEnd&&1===e.getEntries().length&&(window.pwp=setInterval(function(){var a=performance;0<a.getEntries().length&&(window.ppfe===a.getEntries().length?clearInterval(window.pwp):window.ppfe=a.getEntries().length);""===window.cookieRead("s_plt")&&(window.cookieWrite("s_plt",((a.getEntries()[a.getEntries().length-1].responseEnd-a.getEntries()[0].startTime)/1E3).toFixed(2)),window.cookieWrite("s_pltp",window.pageName))},500)):l()))};
/******************************************** END CODE TO DEPLOY ********************************************/

使用此插件

getPageLoadTime 方法不使用任何参数。调用此方法时,不会返回任何内容。相反,会设置以下变量:

  • s._pltPreviousPage:上一页,以便您可以将加载时间与上一页关联
  • s._pltLoadTime:加载上一页所用的时间(以秒为单位)

getPageLoadTime 插件会创建两个第一方 Cookie:

  • s_plt:加载上一页所用的时间(以秒为单位)。将在浏览器会话结束时过期。
  • s_pltp:在上一个 Adobe Analytics 图像请求中记录的 s.pageName 变量的值。将在浏览器会话结束时过期。

示例调用

示例 1

运行以下代码…

if(s.pageName) s.getPageLoadTime();
if(s._pltPreviousPage)
{
  s.prop10 = s._pltLoadTime;
  s.prop11 = s._pltPreviousPage
  s.eVar10 = prop11;
  s.events = "event100=" + s._pltLoadTime;
}

…将执行以下操作:

  • 设置 s.pageName 后运行 getPageLoadTime 插件
  • 将 s.prop10 设置为等于上一页的加载时间
  • 将 s.prop11 和 s.eVar10 设置为等于上一页的名称(s.pageName 中记录的上一页的名称)
  • 将 event100(自定义数值类事件)设置为等于上一页的加载时间。在这种情况下,通过使用自定义事件,可以获得上一页每次加载(来自每位访客/每次访问)累计相加的总时间,从而可以使用计算量度计算出每页面的平均页面加载时间

版本历史记录

2.0.1(2021 年 3 月 26 日)

  • 解决了插件未正确对 s 对象设置值的问题。

2.0(2021 年 3 月 19 日)

  • 以上下文数据形式添加了版本号。

1.0(2018 年 5 月 22 日)

  • 第一版。

在此页面上