A fast website is essential for a good user experience (UX), conversion and findability.
Performance == User Experience == Conversion
For real-world examples of this see https://wpostats.com/
The average website us more than 2MB heavy which is due mostly to images. But also the rise of popularity of Web fonts and JavaScript contributes to this (see: https://www.soasta.com/blog/page-bloat-average-web-page-2-mb/ & https://boagworld.com/usability/performance-ux/)
Steve souders famously stated:
“80-90% of the end-user response time is spent on the frontend. Start there.”.
He discovered that, contrary to what people thought at the time, many performance issues were due to the front-end code (not the back-end).
A 'Performance Budget' is a tool to protect the UX and to make consequences of certain development practices on FED performance clearer.
It is:
- a 'Budget': ‘cost’ on certain 'metrics'
- a set of requirements around performance, scores, etc.
- a 'talking piece' and works towards creating a ‘Culture of performance’
For example:
- “The combined weight of the site remains under 1.5MB”
- “Pages should be loaded within 3 seconds on Cable”
- “A minimum PageSpeed score of 80”
What we measure could change per site. However all metrics should be relevant to UX.
- Milestone times: load-time, ‘first-render’…
- Quantities: number of requests, bytes…
- Scores: SpeedIndex, PageSpeed, ySlow…
- Custom: Twitter: ‘Time to first tweet’…
A performance budget can help to make the consequences on performance more clear:
For example:
“Adding this Hero image adds 255kb extra weight. If we also add this JavaScript functionality, we'll go over our budget of 1.5MB…”
For example:
“Do we really need separate Web-fonts? It's 4 extra requests, 200kb, and makes the page slower. Do we not rather have XYZ?”
There are a couple of options when we go over budget:
- Do not add the files or functionality
- Optimize the files or functionality
- Remove the files or functionality
- Inventorize: target audience, requirements, etc.
- Analyze: current state, ‘competition’, best-practices
- Create a Budget: base-mark (nulmeting), benchmarks
- Document: What? How? Test-settings, etc.
- Re-test: Periodically, after delivery. DIY or use services/tools
Try and work towards a 'Culture of Performance' and always keep UX in the back of your mind. Keep up with performance best-practices and work with e.g. a Performance Checklist when developing (new) features.
One could test manually (with e.g. YellowLab) at certain times (e.g. before committing) with scripts, browser extensions etc, auto-collect certain stats in e.g. Google Analytics or continue to monitor FED performance through (online) services.
- Open Source Tools
- https://www.webpagetest.org/ (OSS. free, hosted + self-hosted)
- https://speedcurve.com/ (payed, hosted)
- https://calibreapp.com/ (payed, hosted)
- https://www.pingdom.com/ (payed, hosted)
- https://www.dareboost.com/en/home (payed, hosted)
- https://newrelic.com/browser-monitoring (payed, hosted)
- http://rigor.com/performance-as-a-service/monitoring (payed, hosted)
- https://www.sitespeed.io/ (OSS. free, self-hosted)
- https://gtmetrix.com/ (free, payed, hosted)
- http://www.showslow.com/ (OSS. free, hosted + self-hosted)