What’s in an mPulse Web App Beacon?

Document created by DPM Admin on Jul 13, 2017Last modified by Sheril Joseph on Aug 9, 2017
Version 2Show Document
  • View in full screen mode

mPulse is built above the boomerang JavaScript library that collects web performance data from a user’s web browser and sends that back to the mPulse servers on a beacon. The simple definition of a beacon is that it is an HTTP(S) request with a ton of data included either as HTTP headers or as part of the Request’s Query String. Within the web performance community, this data is commonly called RUM or Real User Measurement data because it involves measuring the experience of real users. In this document, we will describe the various parameters we collect via the boomerang beacon as well as how they are mapped onto the raw datastore on S3 and the DSWB analysis tool in RedShift.

Top Level Fields

Top level fieldsQuery String ParamS3RedShiftExampleDescription
domainh.ddomaindomainRegistered domain or registered dev domain in mPulse of the page sending the beacon.
timestamptimestamptimestampServer timestamp when beacon arrived.
IPIP Addressremote_ipremote_ipIP Address of the end user or any proxy they might be using.
API Keyh.keykeykeymPulse API Key assigned to this domain.
HTTP Methodhttp_methodhttp_methodGET/POSTHTTP Request method used to send the beacon. This may not be useful for analysis. (For internal use only)
HTTP Versionhttp_versionhttp_version1.1, 1.0, 2.0HTTP Version used when sending the beacon. This may not be very useful for analysis. (For internal use only)
Beacon Referrerhttp_referrerhttp_referrer<url>URL of the page that sent the beacon. This may be blank depending on browser privacy settings.
Proxyproxy_addressproxy_addressIP address of the CDN provider that handled the edge connection for this beacon. This may not be very useful for analysis. (For internal use only)
Beacon Typert.startbeacon_typebeacon_typepage view, angularSpecifies whether this beacon was for a full page view, an XHR call, an Angular.js call, etc.
Page Grouph.pgpage_grouppage_groupHome, Orders, PDPPage Group for the page the beacon relates to. Page groups are defined in the mPulse App Config dialog.
A/B Test nameh.abab_testab_testIf the site uses A/B Testing, this variable specifies the test bucket the user was in when they sent the beacon.
Site/App Versionh.vsite_versionsite_version1.0, 2.5bFor mobile apps, this is the version of the app installed on the user’s device. For websites, site owners may use this to specify a release number for their site.
Filtered URLurlurlURL of page the beacon relates to after passing through all defined URL filters. If no filters are provided, this is the top level URL of the site.
WarningswarningswarningsWarnings added by the collector when parsing this beacon.
SPDYnt_spdyspdyspdySet to true if the page was served using SPDY.
SSLsslsslSet to true if the page was served using SSL.
IPv6ipv6ipv6Set to true if the beacon was sent using IPv6. This may not be very useful for analytics. (For internal user only)


SessionQuery String ParamS3RedShiftExampleThe following fields are all subfields of the session structure in the S3 JSON
Session IDrt.siIDsession_id90d7eab1-f0b2-46fc-acbc-6f19bb583d29-nr6gdfSession ID generated by mPulse and stored in a cookie by Boomerang. The first five chunks are a UUID, while the last chunk is the base36 representation of the session start time (see below) based on the user’s browser’s clock.
Session Start Timert.ssstartsession_startSession start time represented as milliseconds since the epoch based on the user’s browser’s clock. This clock may not be in sync with the server clock, so only compare it with other browser timestamps.
Session Latest Timert.endlatestsession_latestThe timestamp of the current beacon based on the user’s browser’s clock. It is not the timestamp of the latest beacon in the session. To find out actual session duration, look at MAX(latest)-MIN(start) across all beacons grouped by session ID
Session Length in Pagesrt.slpagessession_pagesThe number of pages the user viewed in this session up to and including the current page, but not including any pages viewed after this page in the same session. To find out actual session length in pages, look at MAX(pages) across all beacons grouped by session ID. If MAX(pages) == 1, then the session is considered a bounce.
Uncounted pagesrt.obooboPagessession_obopagesThe number of pages in the session for which we were unable to calculate a load time. We need this to get a closer estimate of the actual average load time of all pages in the session.
Total Load Timert.tttotalLoadTimesession_totalloadtimeThe sum of load times of all pages within the session where we calculated load time. The average load time of a session is MAX(totalLoadTime)/(MAX(pages)-MAX(oboPages)).
Unload flagrt.quitisUnloadsession_isunload(presence indicates true, absense indicates false)This field specifies if the beacon was part of the unload event of the page or not. Unload beacons give us a better idea of how long a session actually lasted.

User Agent Fields

This data comes from the UserAgent HTTP Request Header, there are no query string parameters.

User Agent FieldsS3RedShiftExampleThe following fields are all subfields of the user_agent structure in the S3 JSON
Browser Familyfamilyuser_agent_familyChrome, Firefox, IE, SafariThe browser family extracted from the user agent header.
Major versionmajoruser_agent_major42, 13, 11, etc.The browser major version.
Minor versionminoruser_agent_minor0, 5, etc.The browser minor version.
OS Nameosuser_agent_osWindowsThe Operating System name for the user.
OS Versionosversionuser_agent_osversion8.1The Operating System version for the user.
Modelmodeluser_agent_modelDevice model for mobile devices.
Manufacturermanufactureruser_agent_manufacturerDevice manufacturer for mobile devices.
Device Typetypeuser_agent_device_typeDesktop, MobileDevice type (if known)
Mobile ISPispuser_agent_ispAT&T, VerizonFor mobile apps, this is the mobile service provider if the page was requested over a mobile data connection. In all other cases, this field is empty.
Mobile Flagmobileuser_agent_mobile1 or 0For mobile apps, this will be 1. For everything else, this field will be 0.
Raw User Agent Stringrawuser_agent_rawThe raw user agent HTTP header.

Geo Information

This data comes from doing a MaxMind GeoIP lookup on the source IP address encoded in the network connection between the browser and our server via TCP/IP. There are no query string parameters.

Geo Information from MaxMind GeoIP lookupS3RedShiftExampleThe following fields are all subfields of the geo structure in the S3 JSON
Countryccgeo_ccThe user’s country (L1 geo info).
Region/State/Territoryrggeo_rgThe user’s region, state, province, or territory (L2 geo info).
Citycitygeo_cityThe user’s city (L4 geo info).
Postal Codepostalcodegeo_postalcodeThe user’s postal/zip code.
Latitudelatgeo_latThe user’s approximate latitude.
Longitudelongeo_lonThe user’s approximate longitude.
Organizationorggeo_orgThe user’s organization, if connected over a corporate/university network.
ISPispgeo_ispThe user’s ISP.
Network speednetspeedgeo_netspeedCellular, Ethernet, Cable, etc.The advertised network grade of the user’s internet connection.


Query String ParamS3RedShiftExampleThe following fields are all subfields of the bandwidth structure in the S3 JSON
bwkbpsbandwidth_kbpsBandwidth in kbps as measured by the bandwidth test.
bw_errerror_pcbandwidth_error_pcError in measuring the bandwidth based on standard deviation.
blockbandwidth_block1, 2, 3, 4, 5, 6Bandwidth block (calculated by the server)
Also see Bandwidth & Latency details in the Other Parameters section below.


TimersQuery String ParamS3RedShiftExampleThe following fields are all subfields of the timers structure in the S3 JSON
Base TimersThe following fields are sent on the beacon as-is
Response Timet_respt_resptimers_t_respTime from navigation start to first byte.
In-Page Timet_paget_pagetimers_t_pageTime from first byte to onload (or whenever the page is considered ready).
Load timet_donet_donetimers_t_doneTime from navigation start to onload (or whenever the page is considered ready).
DOM Loadedt_domloadedt_domloadedtimers_t_domloadedTime from navigation start to when the DOMContentLoaded event fired.
Config.js first bytet_configfbt_configfbtimers_t_configfbTime from config.js request to config.js first byte.
Config.js load timet_configjst_configjstimers_t_configjsTime from config.js request to config.js load complete.
Other TimersThe following are sent on the beacon as part of t_other
Boomerang loaderboomr_ldboomr_ldtimers_boomr_ldTime from navigation start to when the Boomerang loader initiates Boomerang download.
Boomerang first byteboomr_fbboomr_fbtimers_boomr_fbTime from navigation start to first byte of Boomerang.
Boomerang latencyboomr_latboomr_lattimers_boomr_latTime from Boomerang request to Boomerang first byte.
Boomerang download timeboomerangboomerangtimers_boomerangTime from first byte of Boomerang until Boomerang completes initialization.

Prerender States

These are only supported on Chrome at this time. See Chromium Prerender docs & Prerendering in Chrome

Prerender statesQuery String ParamS3RedShiftDescription
Prerender completet_loadt_loadtimers_t_loadTime from navigation start to onload, if the page was in a pre-rendered state when onload fired.
Total prerendert_prerendert_prerendertimers_t_prerenderTime from navigation start to page becoming visible, if it went through a pre-rendered state first.
Post rendert_postrendert_postrendertimers_t_postrenderTime from onload in a pre-rendered state to page becoming visible.

Added by Server (No Query String Parameters)

S3RedShiftExampleThe following timers are not on the beacon, but are calculated by the collector
navSt_to_boomrtimers_navSt_to_boomrTime from navigation start to when the Boomerang loader initiates Boomerang download.
fb_to_boomrtimers_fb_to_boomrTime from the first byte of the page to Boomerang’s request initiation. This is used by FirstByteEstimator for beacons without a valid load time.
boomr_to_endtimers_boomr_to_endTime from Boomerang’s request initiation to page load. This is used by FirstByteEstimator for beacons without a valid load time.
before_dnstimers_before_dnsnt_dns_st - nt_nav_st from navigation timing
dnstimers_dnsnt_dns_end - nt_dns_st from navigation timing
tcptimers_tcpnt_con_end - nt_con_st from navigation timing
ssltimers_sslnt_con_end - nt_ssl_st from navigation timing
domLoadtimers_domLoadnt_domloading - nt_nav_st from navigation timing
domReadytimers_domReadynt_domcomp - nt_nav_st from navigation timing
renderStarttimers_renderStartnt_firstpaint - nt_nav_st from navigation timing
loadedtimers_loadednt_load_end - nt_nav_st from navigation timing

Custom Timers

Query String ParamS3RedShiftExampleDescription
custom0 - 9custom0 - custom9timers_custom[0-9]Custom Timers are configured via the mPulse App config dialog and may be based on a JavaScript variable, Navigation Timing, Resource Timing or User Timing. On the beacon, these are part of t_other

User Defined Timers

You may also add your own timers by calling BOOMR.plugins.RT.setTimer from JavaScript. Note that we have no control over these timers. Every custom timer also contains a corresponding _st (eg: custom0_st) that specifies the timestamp when the timer started. This is used to render it on a waterfall.

Custom Metrics

Query String ParamS3RedShiftExampleThe following fields are all subfields of the custom_metrics structure in the S3 JSON
cmet.Metric0_Name0custom_metrics_0Custom metrics are defined in the mPulse App config dialog.
cmet.Metric1_Name1custom_metrics_1On the beacon, these metrics have the prefix cmet, followed by a sanitized version of the metric name.
In the S3 logs, these metrics are all numerically indexed.
cmet.Metric9_Name9custom_metrics_9Metric values are always numeric. Currency values are always in the lowest unit (eg, ¢ rather than $). If a decimal place is included, then the value is multiplied by 100 to get the actual currency value.

Custom Dimensions

Query String ParamS3RedShiftExampleThe following fields are all subfields of the custom_dimensions structure in the S3 JSON
cdim.Dimension0_Name0json_extract_array_element_text(cdim, 0){ <Dimension0_Name>: <Dimension0_value>, alias: <Dimension0_Value_Alias> }Custom dimensions are defined in the mPulse App config dialog
cdim.Dimension1_Name1json_extract_array_element_text(cdim, 1)On the beacon, these dimensions have the prefix cdim, followed by a sanitized version of the dimension name.
In the S3 logs, these dimensions are all numerically indexed.
cdim.Dimension9_Name9json_extract_array_element_text(cdim, 9)Dimension values may be Numeric, String or Boolean.

Third Party Analytics (Big Beacon Data)

Data Collection from Third Party Analytics

Google Analytics

Query String ParamS3RedshiftExampleDescription
tp.ga.clientid-ga_clientid (v91), tp_ga_clientid (v92 and above)-clientID (unique id per visitor)
tp.ga.utm_source-ga_utm_source (v91), tp_ga_utm_source (v92 and above)-Campaign source
tp.ga.utm_medium-ga_utm_medium (v91), tp_ga_utm_medium (v92 and above)-Campaign medium
tp.ga.utm_term-ga_utm_term (v91), tp_ga_utm_term (v92 and above)-Campaign term
tp.ga.utm_content-ga_utm_content (v91), tp_ga_utm_content (v92 and above)-Campaign content
tp.ga.utm_campaign-ga_utm_campaign (v91), tp_ga_utm_campaign (v92 and above)-Campaign ID

Adobe Analytics

Query String ParamS3RedshiftExampleDescription
tp.aa.aid-aa_aid (v91), tp_aa_aid (v92 and above)-Analytics ID (AID)
tp.aa.mid-aa_mid (v91), tp_aa_mid (v92 and above)-Marketing ID (MID)
tp.aa.campaign-aa_campaign (v91), tp_aa_campaign (v92 and above)-Campaign ID

IBM Digital Analytics

Query String ParamS3RedshiftExampleDescription
tp.ia.coreid-ia_coreid (v91), tp_ia_coreid (v92 and above)-Core ID (unique id per visitor)
tp.ia.mmc_vendor-ia_mmc_vendor (v91), tp_ia_mmc_vendor (v92 and above)-Campaign vendor
tp.ia.mmc_category-ia_mmc_category (v91), tp_ia_mmc_category (v92 and above)-Campaign category
tp.ia.mmc_placement-ia_mmc_placement (v91), tp_ia_mmc_placement (v92 and above)-Campaign placement
tp.ia.mmc_item-ia_mmc_item (v91), tp_ia_mmc_item (v92 and above)-Campaign item
tp.ia.sp_type (as of Boomerang 1.389)-tp_ia_sp_type (v92 and above)-Site promotion type
tp.ia.sp_promotion (as of Boomerang 1.389)-tp_ia_sp_promotion (v92 and above)-Site promotion
tp.ia.sp_link (as of Boomerang 1.389)-tp_ia_sp_link (v92 and above)-Site promotion link
tp.ia.re_version (as of Boomerang 1.389)-tp_ia_re_version (v92 and above)-Real estate version
tp.ia.re_pagearea (as of Boomerang 1.389)-tp_ia_re_pagearea (v92 and above)-Real estate page area
tp.ia.re_link (as of Boomerang 1.389)-tp_ia_re_link (v92 and above)-Real estate link

HTTP Headers

HTTP HeadersS3Redshift (not included by default)ExampleThe following fields are all subfields of the headers structure in the S3 JSON
CloudFlareHTTP headers added by CloudFlare
cf-visitorheaders_cf_visitorData added by CloudFlare.
cf-rayheaders_cf_rayRay added by CloudFlare to help trace the path of a request through their network.
cf-connecting-ipheaders_cf_connecting_ipIP address of the remote user as seen by CloudFlare.
x-forwarded-forheaders_x_forwarded_forList of IP addresses specifying user and all proxies between CloudFlare and the user.
x-forwarded-protoheaders_x_forwarded_protohttps, http, spdy, etc.Protocol used by end user’s browser to connect to CloudFlare endpoint.
BrowserHTTP headers added by the browser. See the HTTP spec for more details.
connectionheaders_connectionclose, keep-aliveThe HTTP Connection header specifies if the browser is willing to handle persistent TCP conections or not.
hostheaders_hostThe beacon server where the beacon was sent. This is required by the HTTP specification.
accept-encodingheaders_accept_encodinggzip, deflate, sdchList of encoding (compression) types supported by the user’s browser.
accept-languageheaders_accept_languageen_US, fr_CH, etcLanguage encodings supported by the user’s browser. This could suggest the user’s locale.
acceptheaders_acceptContent types supported by the browser, along with their priorities.
content-lengthheaders_content_lengthThis is only used for POST beacons and is the number of bytes in the POSTed beacon.
ProxyHTTP headers added by intermediate proxies. Use Google for more details
Variousvariousheaders_variousX-Bluecat-ProxyIt is not possible to compile an exhaustive list here, but we will add the most common as we come across them

Other Parameters

Navigation Timing Parameters

Query String ParamS3RedShiftExampleThe following fields are subfields of the params structure in the S3 JSON
NavigationTiming Overview
nt_nav_typent_nav_typeparams_nt_nav_typefNavigation Type
nt_firstpaintnt_firstpaintparams_nt_first_paintnote that this is milliseconds on IE, but seconds.microseconds on Chrome. Not supported on other browsers.
nt_spdynt_spdyparams_nt_spdy1 or 0Whether the page was served using SPDY.
nt_cinfnt_cinfparams_nt_cinfhttp/2Connection Information for page.
rt.bmrrt.bmrparams_rt_bmr_conEn, params_rt_bmr_conSt, params_rt_bmr_domEn, params_rt_bmr_domSt, params_rt_bmr_fetSt, params_rt_bmr_reqSt, params_rt_bmr_resEn, params_rt_bmr_resSt, params_rt_bmr_secSt145,124,1Resource Timing values for Boomerang, compressed using the Resource Timing compression algorithm.
rt.cnfrt.cnfsame as above with cnf instead of bmr301,100,97Resource Timing values for config.js, compressed using the Resource Timing compression algorithm.
restimingrestimingNA (decompressed timings go in their own table, see below for details)Compressed resource timing data for all available resources on the page. See http://nicj.net/compressing-resourcetiming/ and https://github.com/nicjansma/resourcetiming-compression.js for details.

Debugging Info and Timestamps

Debugging Info and TimestampsQuery String ParamS3RedShiftExampleOther browser timestamps and related information taken in Boomerang, mainly used for debugging
Boomerang versionvv
rt.startrt.startparams_rt_startnone, navigation, cookie, manualSpecifies the method used to determine the start time.
rt.tstartrt.tstartparams_rt_tstartTimestamp of navigation start using the method specified in rt.start.
rt.cstartrt.cstartparams_rt_cstartThe value of t_start from the cookie, if different from rt.tstart.
rt.bstartrt.bstartparams_rt_bstartThe timestamp when Boomerang started.
rt.blstartrt.blstartparams_rt_blstartThe timestamp when Boomerang was added to the host page.
rt.endrt.endparams_rt_endThe timestamp when the t_done timer ended.
Session Historyrt.shrt.shparams_rt_shSession History is used for debugging.
Session Resetrt.srstrt.srstparams_rt_srstPast details of session when it gets reset.
Token Timestamph.th.tparams_h_tServer timestamp when the anti-csrf token was generated (note the token is removed from the beacon).
Anti CSRF Tokenh.crparams_h_crThe anti-csrf token added to the beacon.
Unload flagrt.quitrt.quitparams_rt_quitIf this parameter exists, then this was an unload beacon.
Abort flagrt.abldrt.abldparams_rt_abldIf this parameter exists, then the user left the page before it finished loading.
Invisible flagrt.ntvurt.ntvuparams_rt_ntvuIf this parameter exists, then the user left the page without looking at it.
Iframe flagififparams_ifIf this parameter exists, then Boomerang was loaded via the iFrame loader technique.
Errorserrorserrorsparams_errorsJavaScript errors found in Boomerang.


URLsQuery String ParamS3RedShiftExampleURLs related to the beacon
Page/SPA URLuuparams_uURL of Page or SPA route that caused the beacon.
Page URLpgupguparams_pguPage URL if different from u.
Cookie Referrerrrparams_rURL of previous page that Boomerang wrote into a cookie.
Referrerr2r2params_r2Referrer of current page if different from r.
Next URLnunuparams_nuURL clicked, if this beacon was a result of a click.

Page Struture

Query String ParamS3RedShiftExampleDetails about the page structure like DOM nodes, SCRIPTs, etc.
dom.resdom.resparams_dom_resNumber of resources in ResourceTiming.
dom.domsdom.domsparams_dom_domsNumber of domains referenced from page.
dom.lndom.lnparams_dom_lnNumber of DOM nodes on the page.
dom.szdom.szparams_dom_szRendered bytes of base page. This may not be what was sent on the network.
dom.imgdom.imgparams_dom_imgNumber of image nodes on the page.
dom.img.extdom.img.extparams_dom_img_extNumber of image nodes on the page that referenced external URLs.
dom.scriptdom.scriptparams_dom_scriptNumber of script nodes on the page.
dom.script.extdom.script.extparams_dom_script_extNumber of script nodes on the page that referenced external URLs.
dom.res.slowestdom.res.slowestparams_dom_res_slowestSlowest resource on page (if configured).

Screen and Device Details

Query String ParamS3RedShiftExampleDetails about screen resolution, CPU, memory, battery, etc.
scr.xyscr.xyparams_scr_xyScreen width and height seperated with x.
scr.sxyscr.sxyparams_scr_sxyX & Y positions of the scroll bar seperated with x.
scr.bppscr.bppparams_scr_bppScreen colour depth and pixel depth separated by /
scr.ornscr.ornparams_scr_ornportrait, landscapeScreen orientation
scr.dpxscr.dpxparams_scr_dpxScreen device pixel ratio (informs you of details like Retina).
scr.mtpscr.mtpparams_scr_mtpMaximum touch points for touchscreens.
mem.totalmem.totalparams_mem_totalTotal Memory available to the browser.
mem.limitmem.limitparams_mem_limitLimit of the JS Heap size in the browser.
mem.usedmem.usedparams_mem_usedTotal Memory used by the browser.
cpu.cnccpu.cncparams_cpu_cncHardware concurrency (number of CPU cores) available to the browser.
bat.lvlbat.lvlparams_bat_lvlBattery charge level (between 0 & 1)

Visibility State

Query String ParamS3RedShiftExampleTells you when the user last had the page hidden or visible on screen
vis.stvis.stparams_vis_stvisible, hiddenDocument’s visibility state when beacon was sent.
vis.lvvis.lvparams_vis_lvTimestamp when page was last visible.
vis.lhvis.lhparams_vis_lhTimestamp when page was last hidden.

User Agent Details

Query String ParamS3RedShiftExampleMore user agent details, these will eventually go into the User Agent structure above
ua.pltua.pltparams_ua_pltUser Agent Platform
ua.vndua.vndparams_ua_vndUser Agent Vendor

XHR Details

Query String ParamS3RedShiftExampleDetails related to Single Page Apps using XHR
http.errnohttp.errnohttp_errnoStatus code of XHR request in case of error. Note: This is a global field in the S3 JSON. Some special codes are: -1001: timeout, -999: request aborted by client, -998: unknown client error, -997: javascript exception when calling open
http.methodhttp.methodparams_http_methodHTTP method used for XHR request.
http.hdrhttp.hdrparams_http_hdrHTTP response headers for XHR request (optional).
http.initiatorhttp.initiatorparams_http_initiatorType of single page app.
xhr.syncxhr.syncparams_xhr_syncSet to 1 if the XHR call was synchronous.
rt.subresrt.subresparams_rt_subresSet to 1 if this XHR call is a subresource of the parent page and should not be counted towards session length in pages.

Bandwidth and Latency Details

Query String ParamS3RedShiftExampleMore details from the bandwidth test
bw_timebw_timeparams_bw_timeTimestamp when bandwidth was last calculated.
latlatparams_latHTTP latency
lat_errlat_errparams_lat_errStandard error in calculating HTTP latency.
Also see the Bandwidth section above

Mobile Connection Details

Query String ParamS3RedShiftExampleDetails about mobile connection
mob.ctmob.ctparams_mob_ctMobile Connection Type (only in some versions of Android)
mob.bwmob.bwparams_mob_bwAdvertised bandwidth of mobile connection.
mob.mtmob.mtparams_mob_mtthis mobile connection metered or not.

Resource Timing Data

Resource Timing Data is compressed and passed in via a single beacon parameter. The compression is described at http://nicj.net/compressing-resourcetiming/

The full resource timing documentation can be found at https://www.w3.org/TR/resource-timing-2/

This field is expanded into a separate table in Redshift, which includes the following fields:

Resource Timing DataQuery String ParamS3RedShiftExampleData from the ResourceTiming API that goes into its own table in RedShift
params_uThe URL of the page that this resource was loaded from
session_idThe boomerang Session ID (matches session_id above) for this user session.
session_startThe start time for the boomerang session (matches session_start above)
timestampThe server timestamp when this beacon got to our collectors.
nameurlThe URL of the resource
initiatorTypeinitiator_typeimg, image, css, script, link, other, xmlhttprequest
startTimestart_timeAll these times are milliseconds from the page’s navigation start time available in nt_nav_st
workerStartworker_startThe time before the browser invokes a registered service worker on the page
encodedBodySizeencoded_sizeSize of the encoded resource body (ie, with network compression enabled)
decodedBodySizedecoded_sizeSize of the resource body after decompressing/removing content encoding
transferSizetransferred_sizeBytes transferred over the network including HTTP headers for all same-origin redirects. If resource is retrieved from cache, this is the size of headers required to validate the cache (eg: If-Modified-Since request)