Digging Deeper into HAR Files to Identify Optimization Opportunities

The developer tools that are built into browsers are immensely helpful in understanding how a web page is put together. However, despite the visualizations and information that they provide, there is some information that is only attainable through deeper analysis of a page's requests.

By exporting a HTTP Archive (HAR) file from developer tools and analyzing its contents, it's possible to learn a great deal more about how a page is constructed and use that information to identify opportunities for performance optimizations.

About HAR Files

The HAR file is a JSON file that can be exported from the browser's developer tools. It provides the raw data about all resource timings, such as connection times and latency, file size, request and response headers, and mime-types.

Don't get me wrong, HAR files aren't the be-all, end-all. I still use tools like webpagetest.org and Lighthouse to audit sites, but the data contained in the HAR file is an excellent supplement to the information available from other tools.

With the HAR file, it's possible to reconstruct the full waterfall chart of every single request that is made when a browser pulls up a web page, just like other tools. However, since the file is JSON, we can query the data to return relevant information about the requests in question.

For example, if we wanted to see which domain had the longest DNS lookup, that is easily extracted from the data in the HAR file. Using other tools, that type of information would be much harder to obtain.

What Can Be Learned?

By using the HAR file to query the raw data, the data can be grouped and evaluated in any way you see fit. The quickest way to do this for me was to fire up a Jupyter Notebook using Anaconda and query the data using a Pandas DataFrame.

I'm not a frequent Python user, but I chose Pandas because it gives me a quick way to query the data and output the results to a table. The code examples here may not be the most idiomatic Python, but they work.

An Example Analysis

For this article I wanted to take a look at a content-heavy website, so I picked one of my favorite places to shop, rei.com. After exporting the HAR file, I imported the file into a Pandas DataFrame:

# Load data into dataframe
import pandas as pd
import json
from urllib.parse import urlparse

pd.options.display.max_rows = 4000
pd.set_option('display.max_colwidth', 200)

with open('www.rei.com.200315_7R_02b110841afe46047f3f037ef34408f8.har', encoding="utf8") as f:
    data = json.load(f)

collection = []

for entry in data['log']['entries']:
    parse_object = urlparse(entry['request']['url'])
    item = {
        'domain': parse_object.netloc,
        'path': parse_object.path,
        'url': entry['request']['url'],
        'status': entry['response']['status'],
        'statusText': entry['response']['statusText'],
        'type': entry['response']['content']['mimeType'].split(';')[0],
        'size': entry['response']['headersSize'] + entry['response']['bodySize']
    }
    collection.append(item)

df = pd.DataFrame(collection)

Domain Information

Using the information in the HAR file, I took a look at the unique domains that were requested.

df['domain'].value_counts()

The output of the above gives a list of all domains that load assets on the page and the total number of requests by domain.

www.rei.com                                          45
satchel.rei.com                                      11
dpm.demdex.net                                        6
siteintercept.qualtrics.com                           6
match.adsrvr.org                                      5
fonts.gstatic.com                                     3
odeaiqfw.micpn.com                                    2
connect.facebook.net                                  2
rei-mcsp.demdex.net                                   2
pixel.advertising.com                                 2
somni.rei.com                                         2
...

What Can We Do Now?

Once we have this information, we can do a number of different things with it. For example, any domain that is sending a significant amount of requests that is viewed on every page, we can add a tag to the html file to enable DNS prefetching:

<link rel="dns-prefetch" href="https://network.bazaarvoice.com">

This tag will help reduce the network latency involved with DNS lookups. Good candidates for DNS prefetching are any of your CDN domains, font services such as Typekit or Google Fonts, video hosting, domains used for analytics and marketing, and in the case of REI, Bazaarvoice, which is used for customer reviews on their product pages.

Data Segmentation

Another thing that is useful to do is to segment the data using the domain information. Some domains are more important than others. These are domains we have more control of, and thus, are better candidates for optimization.

Other domains, despite appearing in the HAR file, might not be present on every page. An example might be a site that serves display ads. Since the ads can vary from page view to page view, many of these might not be present if a different ad is shown when the page is viewed a second time. Because we have less control over these types of requests, they can put in a separate bucket for evaluation.

Evaluating the Primary Domains
# Primary domains
df_primary_filter = df.query('domain == "www.rei.com" | domain == "satchel.rei.com" | domain == "somni.rei.com"').filter(items=['domain', 'url', 'type', 'size', 'size2']).sort_values(by=['size'], ascending=False)
domain url type size
30 www.rei.com https://www.rei.com/content/dam/images/Expert%20Advice/Migration/HeroImages/C01_5000_Hiking_Boots_Choose_lg.jpg image/jpeg 313411
31 www.rei.com https://www.rei.com/content/dam/images/Expert%20Advice/2018/07/Day_Hiking_Checklist_lg3.jpg image/jpeg 204400
90 www.rei.com https://www.rei.com/dam/van_dragt_121318_0007-plb-satelite-messenger-hero-xs.jpg image/jpeg 201677
91 www.rei.com https://www.rei.com/dam/content_team_081417_16668_how_to_choose_backpacking_tents_xs.jpg image/jpeg 201650
15 www.rei.com https://www.rei.com/static/rev/global/head/global-components-9ac52d0243.min.css text/css 181502
29 www.rei.com https://www.rei.com/content/dam/images/Expert%20Advice/Migration/HeroImages/Vagnini_091316_0373_Main_lg.jpg image/jpeg 166043
69 satchel.rei.com https://satchel.rei.com/media/email-capture/img/modal-bg.jpg image/jpeg 140881
40 www.rei.com https://www.rei.com/assets/homepage/top-categories-and-brands/seo-image-1/live.jpg image/jpeg 139936
26 www.rei.com https://www.rei.com/assets/drsp/membership/benefits/events/live.jpg image/jpeg 139438
70 www.rei.com https://www.rei.com/assets/drsp/merch/co-op-everyday-collection/hp/hp-img-desktop/live.jpg image/jpeg 122836
5 www.rei.com https://www.rei.com/static/rev/global/foot/main-d7e490c738.min.js text/javascript 116414
54 www.rei.com https://www.rei.com/static/global/head/fonts/rei-cedar-fonts-secondary.min.css text/css 108667
43 satchel.rei.com https://satchel.rei.com/media/font/REI_Stuart/REI_Stuart-VF/REIStuart-VF-Web.woff2 text/plain 82334
41 www.rei.com https://www.rei.com/static/global/head/fonts/rei-cedar-fonts-primary.min.css text/css 62683
44 satchel.rei.com https://satchel.rei.com/media/rei-garage/font/gt-pressura-mono-regular.woff text/plain 59870
92 www.rei.com https://www.rei.com/dam/engel_092315_0016_10k_half_marathon_training_tips_xs.jpg image/jpeg 59202
71 www.rei.com https://www.rei.com/assets/drsp/2020/q1/other/run-hub/hp/secondary-hp-img/live.jpg image/jpeg 53918
0 www.rei.com https://www.rei.com/ text/html 47869
6 www.rei.com https://www.rei.com/static/rev/hub/main-820f00f69d.min.js text/javascript 41078
28 www.rei.com https://www.rei.com/assets/drsp/membership/benefits/member-exclusive-events/live.jpg image/jpeg 38750
66 www.rei.com https://www.rei.com/autosuggest/online/details application/json 35724
12 satchel.rei.com https://satchel.rei.com/packages/adobe-target/at-v2.1.0.js application/x-javascript 28197
25 www.rei.com https://www.rei.com/assets/drsp/membership/benefits/annual-dividend/live.jpg image/jpeg 24490
27 www.rei.com https://www.rei.com/assets/drsp/membership/benefits/rentals-icon/live.jpg image/jpeg 24403
17 www.rei.com https://www.rei.com/static/rev/global/head/main-1adce9162a.min.js text/javascript 21026
13 www.rei.com https://www.rei.com/static/rev/global/head/rei-cedar-fontless-65550ad416.min.css text/css 20150
11 satchel.rei.com https://satchel.rei.com/packages/tealium/utag.sync-4.3.0.js application/x-javascript 18020
38 www.rei.com https://www.rei.com/assets/d54dc97c2064b0e9b0827152de16 application/javascript 16797
118 www.rei.com https://www.rei.com/favicon.ico image/x-icon 15750
23 www.rei.com https://www.rei.com/assets/drsp/membership/benefits/trees-left/live.svg image/svg+xml 15308
24 www.rei.com https://www.rei.com/assets/drsp/membership/benefits/trees-right/live.svg image/svg+xml 15255
7 www.rei.com https://www.rei.com/static/rev/cedar-components/cedar-components-5d0d844047.min.js text/javascript 12691
42 satchel.rei.com https://satchel.rei.com/media/font//rei-icons.woff?o5fu1g text/plain 7691
37 satchel.rei.com https://satchel.rei.com/packages/rich-relevance/p13n.js application/x-javascript 5911
117 www.rei.com https://www.rei.com/icon-192x192.png image/png 4120
22 www.rei.com https://www.rei.com/assets/drsp/2020/q1/other/run-hub/run-with-us-banner-logo/live.svg image/svg+xml 3833
1 www.rei.com https://www.rei.com/static/widgets/main.min.css text/css 3377
48 satchel.rei.com https://satchel.rei.com/media/img/footer/trees.svg image/svg+xml 2639
33 satchel.rei.com https://satchel.rei.com/media/global/img/envelope-graphic.png image/png 2085
14 www.rei.com https://www.rei.com/static/rev/global/head/2019-brand-updates-acf4662e26.min.css text/css 1915
3 www.rei.com https://www.rei.com/assets/css/rei-garage/core-v3/live.css text/css 1851
32 satchel.rei.com https://satchel.rei.com/media/common/loader.gif image/gif 1707
68 www.rei.com https://www.rei.com/rest/cart.json?_=1584296487606 application/json 1563
18 www.rei.com https://www.rei.com/static/rev/navigation/main-3f2556a57e.min.js text/javascript 1548
16 www.rei.com https://www.rei.com/static/rev/navigation/main-bedb1b419e.min.css text/css 1488
2 www.rei.com https://www.rei.com/static/rev/hub/main-24c8651427.min.css text/css 1416
67 www.rei.com https://www.rei.com/rest/user/guest application/json 1330
10 www.rei.com https://www.rei.com/assets/js/drsp/countdown-v2/live.js text/javascript 1283
8 www.rei.com https://www.rei.com/assets/js/drsp/appify-urls/live.js text/javascript 1257
75 somni.rei.com https://somni.rei.com/b/ss/reiprod/1/JS-2.14.0/s4654330573569?AQB=1&ndh=1&pf=1&t=15%2F2%2F2020%2018%3A21%3A30%200%200&sdid=0280E7CD5B70297C-7FB86E2E5E7474C9&mid=56337572091924121903429046448239937... image/gif 1174
4 www.rei.com https://www.rei.com/assets/css/transition-typography/rei-stuart-font/preview.css text/css 1052
20 satchel.rei.com https://satchel.rei.com/media/img/header/rei-co-op-logo-white.svg image/svg+xml 1046
9 www.rei.com https://www.rei.com/assets/js/drsp/add-to-cart/live.js text/javascript 915
53 www.rei.com https://www.rei.com/assets/d54dc97c2064b0e9b0827152de16 application/json 809
63 www.rei.com https://www.rei.com/assets/d54dc97c2064b0e9b0827152de16 application/json 808
49 somni.rei.com https://somni.rei.com/id?d_visid_ver=4.3.0&d_fieldgroup=A&mcorgid=F0A65E09512D2C440A490D4D%40AdobeOrg&mid=56337572091924121903429046448239937200&ts=1584296487721 application/x-javascript 704
19 www.rei.com https://www.rei.com/pix/common/pixel.gif image/gif 526
72 www.rei.com https://www.rei.com/rest/client-context?_=1584296487607 application/json 519

Using the information above, we can evaluate all requests made by any of the primary domains.

One thing that I learned from the analysis of the requests above is that there is a module on the home page that appears right above the footer, whose images would probably benefit from responsive markup or server side resizing.

The content in this area is randomized on each pageload, but one of the images at the time the HAR file was generated was 1600x800, despite being displayed at a maximum width of 585px at all of the breakpoints I checked.

The large file size of a > 300kb png file tipped me off to this discovery.

Content Breakdown

It might also be useful to see a content breakdown by request type for the primary domains. This type of data grouping isn't possible with standard developer tools:

df_primary_filter.groupby(['type', 'domain']).sum().sort_values(by=['size'], ascending=False)
type domain size
image/jpeg www.rei.com 1690154
text/css www.rei.com 384101
text/javascript www.rei.com 196212
text/plain satchel.rei.com 149895
image/jpeg satchel.rei.com 140881
application/x-javascript satchel.rei.com 52128
text/html www.rei.com 47869
application/json www.rei.com 40753
image/svg+xml www.rei.com 34396
application/javascript www.rei.com 16797
image/x-icon www.rei.com 15750
image/png www.rei.com 4120
image/svg+xml satchel.rei.com 3685
image/png satchel.rei.com 2085
image/gif satchel.rei.com 1707
somni.rei.com 1174
application/x-javascript somni.rei.com 704
image/gif www.rei.com 526

Using this information, we can ask questions about the content that is being loaded by the primary domains such as:

  • Can we use webp images instead of jpg or png?
  • Are there any formats that don't make sense, such as tif images?
  • Are there things that could be precached using a Service Worker or processes that can be offloaded to a Web Worker?
  • Are there a huge amount of fonts being imported and would it be possible to pare down the faces or weights that are being used?
  • Can we use a build tool to tree-shake only the bare essentials of what is needed on the site or page?
  • Are there lot of svg files and would it be possible to use an svg sprite instead?
Viewing the Secondary Domains

Here is how to put the secondary domains in a different results table:

df_secondary_filter = df.query('domain != "www.rei.com" & domain != "satchel.rei.com" & domain != "somni.rei.com"').filter(items=['domain', 'url', 'type', 'size', 'size2']).sort_values(by=['size'], ascending=False)
domain url type size
85 connect.facebook.net https://connect.facebook.net/signals/config/816358311757684?v=2.9.15&r=stable application/x-javascript 116056
36 tags.tiqcdn.com https://tags.tiqcdn.com/utag/rei/main/prod/utag.js text/javascript 89907
80 triggeredmail.appspot.com https://triggeredmail.appspot.com/triggermail.js/rei_us.js application/javascript 33102
77 connect.facebook.net https://connect.facebook.net/en_US/fbevents.js application/x-javascript 31590
79 www.googletagmanager.com https://www.googletagmanager.com/gtag/js?id=DC-4362844 application/javascript 29294
81 cdn.b0e8.com https://cdn.b0e8.com/conv_v3.js application/javascript 22466
124 siteintercept.qualtrics.com https://siteintercept.qualtrics.com/dxjsmodule/CoreModule.js?Q_CLIENTVERSION=1.22.0&Q_CLIENTTYPE=web application/javascript 21106
119 zn9ykzvxooaxghil3-rei.siteintercept.qualtrics.com https://zn9ykzvxooaxghil3-rei.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_9YKZvxooAxGhiL3&Q_LOC=https%3A%2F%2Fwww.rei.com%2F application/javascript 20064
46 fonts.gstatic.com https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 font/woff2 16396
45 fonts.gstatic.com https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxK.woff2 font/woff2 16316
47 fonts.gstatic.com https://fonts.gstatic.com/s/robotocondensed/v18/ieVl2ZhZI2eCN5jzbjEETS9weq8-19K7DQ.woff2 font/woff2 16300
86 odeaiqfw.micpn.com https://odeaiqfw.micpn.com/p/js/1.js text/javascript 16153
78 cdn.avmws.com https://cdn.avmws.com/1010248/?url=https%3A%2F%2Fwww.rei.com%2F&ref=&name=REI%20Co-op%3A%20Outdoor%20Clothing%2C%20Gear%20and%20Footwear%20from%20Top%20Brands&avmws=0&rand=0.20219307540666787&lib=1 application/javascript 14043
87 www.googleadservices.com https://www.googleadservices.com/pagead/conversion_async.js text/javascript 10999
120 js-agent.newrelic.com https://js-agent.newrelic.com/nr-1167.min.js application/javascript 10786
84 bat.bing.com https://bat.bing.com/bat.js application/javascript 8242
82 t.channeladvisor.com https://t.channeladvisor.com/v2/12021789.js text/javascript 7416
35 ds-aksb-a.akamaihd.net https://ds-aksb-a.akamaihd.net/aksb.min.js application/x-javascript 5204
83 resources.xg4ken.com https://resources.xg4ken.com/js/v2/ktag.js?tid=KT-N4270-3EB text/plain 4589
126 siteintercept.qualtrics.com https://siteintercept.qualtrics.com/dxjsmodule/PopOverModule.js?Q_CLIENTVERSION=1.22.0&Q_CLIENTTYPE=web application/javascript 3842
76 recs.richrelevance.com https://recs.richrelevance.com/rrserver/p13n_generated.js?a=30280c406d639577&ts=1584296490013&v=1.2.6.20180926&ssl=t&pt=%7Chome_page.InlineHomeMid1%7Chome_page.content_slot_1%7Chome_page.content_s... text/javascript 3433
50 rei-mcsp.demdex.net https://rei-mcsp.demdex.net/dest5.html?d_nsid=0 text/html 3433
127 siteintercept.qualtrics.com https://siteintercept.qualtrics.com/WRSiteInterceptEngine/Asset.php?Module=SI_39Ldstbt3ny7tNb&Version=9&Q_ORIGIN=https://www.rei.com&Q_CLIENTVERSION=1.22.0&Q_CLIENTTYPE=web application/json 2202
102 googleads.g.doubleclick.net https://googleads.g.doubleclick.net/pagead/viewthroughconversion/1069764188/?random=1584296492193&cv=9&fst=1584296492193&num=1&bg=ffffff&guid=ON&resp=GooglemKTybQhCsO&u_h=1200&u_w=1920&u_ah=1200&u... text/javascript 2124
101 googleads.g.doubleclick.net https://googleads.g.doubleclick.net/pagead/viewthroughconversion/1069764188/?random=1584296492182&cv=9&fst=1584296492182&num=1&bg=ffffff&guid=ON&resp=GooglemKTybQhCsO&u_h=1200&u_w=1920&u_ah=1200&u... text/javascript 2108
128 siteintercept.qualtrics.com https://siteintercept.qualtrics.com/WRSiteInterceptEngine/Asset.php?Module=CR_9HRdxUr8UKlTT3T&Version=8&Q_InterceptID=SI_39Ldstbt3ny7tNb&Q_ORIGIN=https://www.rei.com&Q_CLIENTVERSION=1.22.0&Q_CLIEN... application/json 1741
125 siteintercept.qualtrics.com https://siteintercept.qualtrics.com/WRSiteInterceptEngine/Targeting.php?Q_ZoneID=ZN_9YKZvxooAxGhiL3&Q_CLIENTVERSION=1.22.0&Q_CLIENTTYPE=web&t=1584296494298&Q_VSI=%7B%22SI_39Ldstbt3ny7tNb%22%3A%22D... application/json 1713
121 siteintercept.qualtrics.com https://siteintercept.qualtrics.com/WRSiteInterceptEngine/Targeting.php?Q_ZoneID=ZN_9YKZvxooAxGhiL3&Q_CLIENTVERSION=1.22.0&Q_CLIENTTYPE=web application/json 1605
74 rei-mcsp.demdex.net https://rei-mcsp.demdex.net/event?d_dil_ver=9.1&_ts=1584296490243 application/json 1533
21 fonts.googleapis.com https://fonts.googleapis.com/css?family=Roboto+Condensed:400|Roboto:400,700 text/css 1468
56 cm.g.doubleclick.net https://cm.g.doubleclick.net/pixel?google_nid=adobe_dmp&google_cm&gdpr=0&gdpr_consent= text/html 1402
39 dpm.demdex.net https://dpm.demdex.net/id/rd?d_visid_ver=4.3.0&d_fieldgroup=MC&d_rtbd=json&d_ver=2&d_verify=1&d_orgid=F0A65E09512D2C440A490D4D%40AdobeOrg&d_nsid=0&ts=1584296486748 application/json 1366
95 4362844.fls.doubleclick.net https://4362844.fls.doubleclick.net/activityi;dc_pre=CO7IpvGGnegCFTnT4QodZjwEeA;src=4362844;type=wb_ho346;cat=home_716;ord=1097599575583;gtm=2od340;auiddc=1174147583.1584296492;~oref=https%3A%2F%2... text/html 1195
57 cm.g.doubleclick.net https://cm.g.doubleclick.net/pixel?google_nid=adobe_dmp&google_cm=&gdpr=0&gdpr_consent=&google_tc= text/html 1150
93 4362844.fls.doubleclick.net https://4362844.fls.doubleclick.net/activityi;src=4362844;type=wb_ho346;cat=home_716;ord=1097599575583;gtm=2od340;auiddc=1174147583.1584296492;~oref=https%3A%2F%2Fwww.rei.com%2F text/html 964
99 adservice.google.com https://adservice.google.com/ddm/fls/z/dc_pre=CO7IpvGGnegCFTnT4QodZjwEeA;src=4362844;type=wb_ho346;cat=home_716;ord=1097599575583;gtm=2od340;auiddc=*;~oref=https%3A%2F%2Fwww.rei.com%2F image/gif 958
52 dpm.demdex.net https://dpm.demdex.net/ibs:dpid=411&dpuuid=Xm5sbAAAApyBB8Qc image/gif 911
105 ib.adnxs.com https://ib.adnxs.com/getuid?https%3a%2f%2fmatch.adsrvr.org%2ftrack%2fcmf%2fappnexus%3fttd%3d1%26anid%3d%24UID&ttd_tdid=c25f318f-bc87-4702-9d20-94b71346d7df text/html 910
94 storage.googleapis.com https://storage.googleapis.com/bluecore_addons/rei_us.ju.js application/javascript 891
106 ib.adnxs.com https://ib.adnxs.com/bounce?%2Fgetuid%3Fhttps%253a%252f%252fmatch.adsrvr.org%252ftrack%252fcmf%252fappnexus%253fttd%253d1%2526anid%253d%2524UID%26ttd_tdid%3Dc25f318f-bc87-4702-9d20-94b71346d7df text/html 831
96 ssl.avmws.com https://ssl.avmws.com/1010248/?url=https%3A%2F%2Fwww.rei.com%2F&ref=&name=REI%20Co-op%3A%20Outdoor%20Clothing%2C%20Gear%20and%20Footwear%20from%20Top%20Brands&avmws=0&rand=0.3091682927444721&lib=1... application/javascript 810
112 ads.yahoo.com https://ads.yahoo.com/cms/v1?esig=1%7efac06801624107e5d8ee63717a17d281e39cf167&nwid=10000480789&sigv=1&gdpr=0&gdpr_consent=&ttd_tdid=c25f318f-bc87-4702-9d20-94b71346d7df 769
97 odeaiqfw.micpn.com https://odeaiqfw.micpn.com/p/cp/-1/track.gif?t=1584296492114&mi_u=anon-1584296492112-1670662558&mi_cid=5274&page_title=REI%20Co-op%3A%20Outdoor%20Clothing%2C%20Gear%20and%20Footwear%20from%20Top%2... image/gif 729
107 www.google.com https://www.google.com/pagead/1p-user-list/1069764188/?random=1584296492182&cv=9&fst=1584295200000&num=1&bg=ffffff&guid=ON&u_h=1200&u_w=1920&u_ah=1200&u_aw=1920&u_cd=24&u_his=3&u_tz=0&u_java=false... image/gif 712
108 www.google.com https://www.google.com/pagead/1p-user-list/1069764188/?random=1584296492193&cv=9&fst=1584295200000&num=1&bg=ffffff&guid=ON&u_h=1200&u_w=1920&u_ah=1200&u_aw=1920&u_cd=24&u_his=3&u_tz=0&u_java=false... image/gif 712
34 dpm.demdex.net https://dpm.demdex.net/id?d_visid_ver=4.3.0&d_fieldgroup=MC&d_rtbd=json&d_ver=2&d_verify=1&d_orgid=F0A65E09512D2C440A490D4D%40AdobeOrg&d_nsid=0&ts=1584296486748 701
65 dpm.demdex.net https://dpm.demdex.net/ibs:dpid=96420&dpuuid=rTkosg8jogJw& image/gif 666
59 dpm.demdex.net https://dpm.demdex.net/ibs:dpid=771&dpuuid=CAESEF3vOiBbPZIFWymmZtkj9J0&google_cver=1?gdpr=0&gdpr_consent= image/gif 666
62 dpm.demdex.net https://dpm.demdex.net/ibs:dpid=903&dpuuid=c25f318f-bc87-4702-9d20-94b71346d7df image/gif 666
98 www.facebook.com https://www.facebook.com/tr/?id=816358311757684&ev=PageView&dl=https%3A%2F%2Fwww.rei.com%2F&rl=&if=false&ts=1584296491989&sw=1920&sh=1200&v=2.9.15&r=stable&a=tmtealium&ec=0&o=30&fbp=fb.1.158429649... image/gif 611
58 match.adsrvr.org https://match.adsrvr.org/track/cmf/generic?ttd_pid=aam&gdpr=0&gdpr_consent=&ttd_tpi=1 text/html 599
55 recreationalequipmen.tt.omtrdc.net https://recreationalequipmen.tt.omtrdc.net/rest/v1/delivery?client=recreationalequipmen&sessionId=e35baf16d3b84c6e9340ecc0d98b0885&version=2.1.0 application/json 550
111 match.adsrvr.org https://match.adsrvr.org/track/cmf/generic?ttd_pid=bluekai text/html 534
109 match.adsrvr.org https://match.adsrvr.org/track/cmf/appnexus?ttd=1&anid=5256892062723309003&ttd_tdid=c25f318f-bc87-4702-9d20-94b71346d7df text/html 520
113 match.adsrvr.org https://match.adsrvr.org/track/cmf/rightmedia?xid=stIm0gnQ4zOVn50e7KBSK8MR&gdpr=0&gdpr_consent&ttd_tdid=c25f318f-bc87-4702-9d20-94b71346d7df text/html 481
60 match.adsrvr.org https://match.adsrvr.org/track/cmb/generic?ttd_pid=aam&gdpr=0&gdpr_consent=&ttd_tpi=1 text/html 444
110 tags.bluekai.com https://tags.bluekai.com/site/5386?id=c25f318f-bc87-4702-9d20-94b71346d7df&redir=https%3A%2F%2Fmatch.adsrvr.org%2Ftrack%2Fcmf%2Fgeneric%3Fttd_pid%3Dbluekai 432
116 ups.analytics.yahoo.com https://ups.analytics.yahoo.com/ups/55953/sync?uid=c25f318f-bc87-4702-9d20-94b71346d7df&_origin=1&gdpr=0&gdpr_consent=&apid=UP62102dfd-66e6-11ea-a3d2-0e5725573571 426
100 insight.adsrvr.org https://insight.adsrvr.org/track/evnt/?adv=2d421ru&ct=0:7ahx5pcv&fmt=3 422
115 pixel.advertising.com https://pixel.advertising.com/ups/55953/sync?uid=c25f318f-bc87-4702-9d20-94b71346d7df&_origin=1&gdpr=0&gdpr_consent=&verify=true 411
114 pixel.advertising.com https://pixel.advertising.com/ups/55953/sync?uid=c25f318f-bc87-4702-9d20-94b71346d7df&_origin=1&gdpr=0&gdpr_consent= 364
51 cm.everesttech.net https://cm.everesttech.net/cm/dd?d_uuid=56545097576442944973441191487461915599 336
73 tags.tiqcdn.com https://tags.tiqcdn.com/utag/tiqapp/utag.v.js?a=rei/main/202003121836&cb=1584296490023 text/javascript 325
104 www.facebook.com https://www.facebook.com/tr/ text/plain 318
88 bat.bing.com https://bat.bing.com/action/0?ti=4052856&Ver=2&mid=0c5cfd37-452c-a0cd-4a13-e46fb2635769&pi=1200101525&lg=en-US&sw=1920&sh=1200&sc=24&tl=REI%20Co-op%3A%20Outdoor%20Clothing,%20Gear%20and%20Footwear... 284
123 bam.nr-data.net https://bam.nr-data.net/1/b8a66d4730?a=6355287&v=1167.2a4546b&to=NQdRZUsHCBBYV0MLVwxNcERKEgkOFg%3D%3D&rst=8065&ref=https://www.rei.com/&ap=138&be=969&fe=7858&dc=3727&af=err,xhr,stn,ins&perf=%7B%22... text/javascript 273
89 tracking2.channeladvisor.com https://tracking2.channeladvisor.com/welcome_fp.asp?SMCID=12021789&CAID=4851df61-1fb9-46b6-a07f-0965a9bfa1eb&x=&t=1584296491706 text/html 269
122 i47724300-ds-aksb-a.akamaihd.net https://i47724300-ds-aksb-a.akamaihd.net/2/34611/b?dE=24&cS=24&cE=108&rqS=111&rsS=235&rsE=329&sS=56&dl=253&di=2538&fp=1353&dlS=3714&dlE=4092&dc=7843&leS=7843&leE=7853&to=&ol=0&cr=35&mt=&mb=&b=6556... text/html 267
64 pxl.jivox.com https://pxl.jivox.com/tags/sync/usync.php?px=IkovJ4aN 250
103 a.b0e8.com https://a.b0e8.com/brightedge3.php?id=f00000000036312&p_id=A688J64J862NRNJ2JA48RP4PAAAAAAAAAH&bf=fb45ab1525e1204e8c81ee38924a3b85&url=https%3A//www.rei.com/&ref=&bn=1&bv=3.43&title=REI%20Co-op%3A%... image/gif 233
61 match.rundsp.com https://match.rundsp.com/match.gif?id=56545097576442944973441191487461915599&partner=adobe 51

While there might not be much we can do with this, we might be able to identify things that can be selectively loaded as needed. In the case of REI, there might not really be anything to clean up from the third-party requests, but sometimes you might discover things like unminified development versions of frameworks or SDKs that were accidentally deployed to production or libraries for services that have since been canceled.

Conclusion

HAR files can fill in the gaps that aren't possible with other software performance tools. Using all of them in conjunction can help provide a complete picture of what is going on with a site in order to make informed decisions.

It's worth exploring the HAR file on any of the important layouts on a site. Once you get the initial setup done, the reports are reusable since they are just code that is being executed and then output.