A friend recently asked me to set up a simple experiment to measure hosting latency across Netlify, Firebase, and Cloudflare Pages. I created three basic websites, each hosted on one of them. These sites can be accessed at:
- one.provos.org (Netlify)
- two.provos.org (Firebase)
- three.provos.org (Cloudflare Pages)
The goal was to provide a quick and easy way to compare real-time performance differences between these hosting providers using a measurement tool. I then got the idea that the websites themselves could do the measurement via the browers that visit them.
Each webpage uses a standard Hugo blog with Tailwind CSS. The content is automatically pushed to the three platforms on every commit via GitHub Actions and platform integrations.
After the first iteration, I wanted to also explore Cloudflare Workers and D1 databases. I wrote an integration to collect the performance data via Cloudflare Workers. Every hour, another Cloudflare Worker aggregates the hourly latencies and serves the last 14 days of data back to the browser, displaying it with a Chart.js chart.
The updated sites now collect performance data across different geographic locations. The first three measurements from each user contribute to an aggregated dataset that shows hourly performance statistics by platform and country, including percentile-based statistics (p50-p99).
The entire solution runs on Cloudflare’s free tier. Feel free to run your own tests and explore the performance charts! Below is a screenshot on how the website should look when you visit it.