All Projects → csabapalfi → Awesome Pagespeed Metrics

csabapalfi / Awesome Pagespeed Metrics

Licence: cc0-1.0
⚡Metrics to help understand page speed and user experience

Projects that are alternatives of or similar to Awesome Pagespeed Metrics

Garie
Open source web performance
Stars: ✭ 484 (-17.26%)
Mutual labels:  metrics, performance, web-performance
Perfume.js
Web performance library for measuring all User-centric performance metrics
Stars: ✭ 2,533 (+332.99%)
Mutual labels:  metrics, performance, web-performance
Nemetric
前端性能指标的监控,采集以及上报。用于测量第一个dom生成的时间(FP/FCP/LCP)、用户最早可操作时间(fid|tti)和组件的生命周期性能,,网络状况以及资源大小等等。向监控后台报告实际用户测量值。
Stars: ✭ 145 (-75.21%)
Mutual labels:  metrics, performance, web-performance
Browser Perf
Performance Metrics for Web Browsers
Stars: ✭ 930 (+58.97%)
Mutual labels:  metrics, performance, web-performance
Opbeat Node
DEPRECATED - See Elastic APM instead: https://github.com/elastic/apm-agent-nodejs
Stars: ✭ 155 (-73.5%)
Mutual labels:  metrics, performance
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+239.49%)
Mutual labels:  metrics, performance
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+289.91%)
Mutual labels:  metrics, performance
Metered Rs
Fast, ergonomic metrics for Rust
Stars: ✭ 258 (-55.9%)
Mutual labels:  metrics, performance
Web Vitals Module
Web Vitals: Essential module for a healthy Nuxt.js
Stars: ✭ 138 (-76.41%)
Mutual labels:  metrics, performance
Javamelody
JavaMelody : monitoring of JavaEE applications
Stars: ✭ 2,486 (+324.96%)
Mutual labels:  metrics, performance
Wallace Cli
Pretty CSS analytics on the CLI
Stars: ✭ 281 (-51.97%)
Mutual labels:  metrics, performance
Goose
Load testing tool, inspired by Locust
Stars: ✭ 151 (-74.19%)
Mutual labels:  metrics, performance
App perf
Open source application performance monitoring tool with emphasis on ease of setup and use. Providing similar functionality like NewRelic/AppNeta/Skylight etc.
Stars: ✭ 353 (-39.66%)
Mutual labels:  metrics, performance
Scouter
Scouter is an open source APM (Application Performance Management) tool.
Stars: ✭ 1,792 (+206.32%)
Mutual labels:  metrics, performance
React Native Performance
Monitor and measure React Native performance
Stars: ✭ 269 (-54.02%)
Mutual labels:  metrics, performance
Swagger Stats
API Observability. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices.
Stars: ✭ 559 (-4.44%)
Mutual labels:  metrics, performance
Snmpcollector
A full featured Generic SNMP data collector with Web Administration Interface for InfluxDB
Stars: ✭ 216 (-63.08%)
Mutual labels:  metrics, performance
Stagemonitor
an open source solution to application performance monitoring for java server applications
Stars: ✭ 1,664 (+184.44%)
Mutual labels:  metrics, performance
Perf Tools
⏱→ 🚀A set of tools for improving performance your application (balancer, performance, PerfKeeper, LazyPromise).
Stars: ✭ 135 (-76.92%)
Mutual labels:  metrics, performance
Skywalking
APM, Application Performance Monitoring System
Stars: ✭ 18,341 (+3035.21%)
Mutual labels:  metrics, web-performance

Awesome Page Speed Metrics Awesome

Metrics to help understand page speed and user experience.

If you're just getting started check out web.dev/metrics first.

Contents

Concepts

Lab Data (Synthetic Measurements)

Make a request to your page with a tool and evaluate performance. Be sure to make it realistic (e.g. by throttling network and CPU) and reduce noise (e.g. by running multiple times).

  • Lighthouse - A tool built on Google Chrome to audit web pages. You can run it from Chrome DevTools, a Chrome Extension or from the command line (even with headless Chrome).
  • Google PageSpeed Insights - Free and hosted Lighthouse reporting (and more) by Google.
  • WebpageTest - Free and hosted web performance testing (also an open source project).
  • Sitespeed.io - A set of open source performance monitoring tools.
  • Calibre - Web performance monitoring SaaS.
  • treo.sh - Web performance monitoring SaaS.
  • SpeedCurve - Web performance monitoring SaaS.
  • AwesomeTechStack - Website awesomeness monitoring Tool.

Field Data (Real User Monitoring - RUM)

Collect performance data from real users visiting your page. Be mindful of the actual overhead, as it runs in your user's browser and watch out for browser support of more recent metrics (e.g. compared to your user-base).

Critical rendering path

The critical rendering path is everything that happens between receiving network bytes and rendering something on the screen. To optimize any rendering metrics like First Contentful Paint (FCP) or Speed Index you have to understand how the critical rendering path works.

Long tasks

The browser Main Thread that handles user input is also the one executing JavaScript (among many other things). Blocking the Main Thread for too long can make your page unresponsive.

A user perceives any visual change within 100ms as instant. Any task blocking the Main Thread by taking longer than 50ms is considered a long task (as it might make the browser unresponsive to user input).

To optimize interactivity metrics like Total Blocking Time (TBT) and First Input Delay (FID) you have to understand long tasks and how to avoid them as much as possible.

User-centric metrics

It's important to track metrics relevant to users and their experience. To measure the perceived performance we can choose metrics by framing them around a few key questions.

  • Docs - User-centric Performance Metrics - web.dev
  • Is it happening? - Did the navigation start successfully? Has the server responded? (e.g FCP)
  • Is it useful/meaningful? - Has enough content rendered that users can engage with it? (e.g. LCP)
  • Is it usable - Can users interact with the page, or is it still busy loading? (e.g TBT)
  • Is it delightful/smooth? - Are the interactions smooth and natural, free of lag and jank?

Rendering metrics

First Contentful Paint (FCP)

The First Contentful Paint (FCP) metric measures the time from when the page starts loading to when any part of the page's content is rendered on the screen. For this metric, "content" refers to text, images (including background images), <svg> elements, or non-white <canvas> elements.

Largest Contentful Paint (LCP)

The Largest Contentful Paint (LCP) metric reports the render time of the largest content element visible within the viewport.

Cumulative Layout Shift (CLS)

A layout shift occurs any time a visible element changes its position from one frame to the next. CLS measures the sum total of all individual layout shift scores for every unexpected layout shift that occurs during the entire lifespan of the page.

Visually Complete

The Visually Complete is the time from the start of the initial navigation until the visible (above the fold) part of your page is no longer changing. (e.g. WPT measures this using a color histogram of the page based on video/screenshots recording).

Speed Index

Speed Index shows how quickly the contents of a page are visibly populated (lower numbers are better). This is done by frequently measuring visual completeness during loading. The quicker the page is more visually complete the lower the value.

(Hero) Element Timing

Element Timing captures when specific elements are painted by the browser. Hero elements can be defined as the largest h1, img or background image (or custom ones using the Element Timing API)


Interactivity metrics

Time to Interactive (TTI)

Time to interactive is the time it takes for the page to become fully interactive (as in Main Thread quiet for 5s). Sometimes called Consistently Interactice and not to be confused with First Interactive or First CPU Idle. (Warning: one of the most confusing and misunderstood metrics).

Total Blocking Time (TBT)

The Total Blocking Time (TBT) metric measures the total amount of time between First Contentful Paint (FCP) and Time to Interactive (TTI) where the main thread was blocked for long enough to prevent input responsiveness.

First Input Delay (FID)

First Input Delay (FID) measures the time from when a user first interacts with your site to the time when the browser is actually able to respond to that interaction. An interaction can be when users click a link, tap on a button, or use a custom, JavaScript-powered control.

Max Potential First Input Delay

The maximum potential First Input Delay that your users could experience. Basically equals to the duration of the longest long task on the browser Main Thread.


Network metrics

Network timing field data can uncover a non-optimized TLS setup, slow DNS lookups or server side processing and issues with CDN configuration. See also a separate section about measuring transferred bytes.

DNS latency

  • Lab: DNS performance testing tools
  • Field: IE9+, Safari 9+
// Measuring DNS lookup time
var pageNav = performance.getEntriesByType("navigation")[0];
var dnsTime = pageNav.domainLookupEnd - pageNav.domainLookupStart;

TCP and SSL/TLS latency

// Quantifying total connection time
var pageNav = performance.getEntriesByType("navigation")[0];
var connectionTime = pageNav.connectEnd - pageNav.connectStart;
var tlsTime = 0; // <-- Assume 0 by default

// Did any TLS stuff happen?
if (pageNav.secureConnectionStart > 0) {
  // Awesome! Calculate it!
  tlsTime = pageNav.connectEnd - pageNav.secureConnectionStart;
}

Time to First Byte (TTFB)

  • Lab: most server load testing tools report this
  • Field: IE9+, Safari 9+
var ttfb = pageNav.responseStart - pageNav.requestStart;

Transferred bytes

You can measure the byte weight of your assets with a number of tools. You would normally track these Lab only as the numbers are usually the same in the Field (but be mindful of device type or geographical location specific pages).

Measuring own (and third-party) JavaScript bytes is crucial as JavaScript is the main cause of high TTI or FID values.


Other metrics

Google PageSpeed Insights score

User Timing

The User Timing API allows the developer to create application specific timestamps that are part of the browser's performance timeline. e.g. you can create a user timing mark to measure when your JS has loaded for a specific component on the page.

  • Lab: Lighthouse, WPT
  • Field: IE 10+, Safari 11+ (and Chrome, Firefox of course)
  • Spec - User Timing

Server Timing

Surface any backend server timing metrics (e.g. database latency, etc.) in the developer tools in the user's browser or in the PerformanceServerTiming interface.

Frame rate

The frame rate is the frequency at which the browser can display frames. A frame represents the amount of work a browser does in one event loop iteration such as processing DOM events, resizing, scrolling, rendering, CSS animations, etc. A frame rate of 60 fps (frames per second) is a common target for a good responsive user experience. This means the browser should process a frame in about 16.7 ms.

DOMContentLoaded

window.load

License

CC0

To the extent possible under law, Csaba Palfi has waived all copyright and related or neighboring rights to this work.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].