- https://speedcurve.com/blog/
- https://calendar.perfplanet.com/2017/an-audit-of-boomerangs-performance/
- Time to interactive - Measuring more of the user experience - https://calendar.perfplanet.com/2017/time-to-interactive-measuring-more-of-the-user-experience/
- PERCEPTION MATTERS: MAKING RUM MORE REAL - https://blogs.akamai.com/2018/04/perception-matters-measure-perceived-performance.html
- Web performance made easy - https://developers.google.com/web/updates/2018/08/web-performance-made-easy
- Url not working - https://developer.akamai.com/blog/2017/04/12/gauge-user-experience-time-interactive/
- Github containing most suggestions around perf - https://github.com/fabkrum/web-performance-resources
- Frontend performance checklist - https://github.com/thedaviddias/Front-End-Performance-Checklist
- PWA metrics using lightouse - https://github.com/paulirish/pwmetrics
- Web performance made easy By developers.google.com - https://developers.google.com/web/updates/2018/08/web-performance-made-easy
- Reduce javascript payload with code splitting - https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting/
- https://www.igvita.com/2015/08/17/eliminating-roundtrips-with-preconnect/
- https://blog.mozilla.org/services/2016/08/23/sending-vapid-identified-webpush-notifications-via-mozillas-push-service/
- https://wpostats.com/
- https://calendar.perfplanet.com/2017/tracking-cpu-with-long-tasks-api/
- Hero image custom metrics (Stevesouders.com) - https://bigquery.cloud.google.com/table/quikr-analytics:55267520.ga_sessions_20181127?tab=schema
- User timing & custom metrics (stevesouders.com) - https://speedcurve.com/blog/user-timing-and-custom-metrics/
- Rendering metrics explaining all metrics (stevesouders) - https://speedcurve.com/blog/rendering-metrics/
- https://medium.com/reloading/javascript-start-up-performance-69200f43b201
- https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/javascript-startup-optimization/
- Adding naive timers to figure out parsing & execution time - https://speakerdeck.com/desp/unpacking-the-black-box-benchmarking-js-parsing-and-execution-on-mobile-devices?slide=24
- https://calendar.perfplanet.com/2014/driving-webpagetest-from-a-google-docs-spreadsheet/
- https://har.tech/
- https://wpostats.com/
- Page life cycle API - https://developers.google.com/web/updates/2018/07/page-lifecycle-api
- Speedscope - Inteactive flamegraph explorer - https://developers.google.com/search/reference/robots_meta_tag
- http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/
- https://www.stevesouders.com/blog/2014/11/25/serious-confusion-with-resource-timing/
- https://www.w3.org/TR/resource-timing/#duration-attribute
- https://www.w3.org/TR/resource-timing/#processing-model
- Resource timing - https://github.com/akamai/boomerang/blob/master/plugins/restiming.js
- https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- https://developers.google.com/web/tools/chrome-devtools/network-performance/understanding-resource-timing
- Logging activity with the web beacon API - https://www.smashingmagazine.com/2018/07/logging-activity-web-beacon-api/
- Input latency
const btn = document.querySelector('btn')
btn.addEventListener('click', (event) => {
const lag = performance.now() - event.timeStamp;
if(lag > 100)
sendDataToAnalytics('Input latency', lag)
})
- Measuring TTI
import ttiPolyfill from './path/to/tti-polyfill.js'
ttiPolyfill.getFirstConsistentlyInteractive().then((tti) => {
sendDataToAnalytics('Time to Interactive', tti)
})
-
Holding third parties accountable - longtask api's
-
Using user timing API
performance.mark("mySetTimeout-start");
// Wait some time.
setTimeout(function() {
// Mark the end of the time.
performance.mark("mySetTimeout-end");
// Measure between the two different markers.
performance.measure(
"mySetTimeout",
"mySetTimeout-start",
"mySetTimeout-end"
);
// Get all of the measures out.
// In this case there is only one.
var measures = performance.getEntriesByName("mySetTimeout");
var measure = measures[0];
console.log("setTimeout milliseconds:", measure.duration)
// Clean up the stored markers.
performance.clearMarks();
performance.clearMeasures();
}, 1000);
Other references
- https://www.html5rocks.com/en/tutorials/webperformance/usertiming/
- Using mark & measure user timing APIs
- Boomerang akamai docs (mpulse)
- https://developer.akamai.com/tools/boomerang/docs/BOOMR.plugins.ResourceTiming.html
- https://developer.akamai.com/tools/boomerang/docs/index.html
- https://developer.akamai.com/tools/boomerang/docs/tutorial-building.html
- https://developer.akamai.com/tools/boomerang/docs/BOOMR.html
- https://github.com/sergeychernyshev/ux-capture (Nework meetup material)
- https://use.typekit.net/previewkits/pk-v1.js
- http://c.go-mpulse.net/boomerang/CEN2P-NP9AH-JM5WW-J3WEF-62YQE
- https://medium.com/frontmen/art-of-debugging-with-chrome-devtools-ab7b5fd8e0b4
- Timeline Profiling with Chrome DevTools - http://blog.librato.com/posts/chrome-devtools
- User timing rum - https://gist.github.com/pmeenan/5902672 (Support routine for adding W3C user timing events to a site. Includes some basic polyfill support for browsers that don't support user timing or navigation timing)
- https://pagebuildersandwich.com/increased-plugins-performance-200/
- What forces layout reflows by PaulIrish - https://gist.github.com/paulirish/5d52fb081b3570c81e3a
- Jake archibald - https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/