A fast page is not simply a small page. It is a page that gives the browser a clear path to meaningful content and keeps work predictable on a slow connection or an older device.

Measure the critical path

Start with the first document request, then list the resources that block the first useful render. Check transfer size, response time, compression, and cache headers. Browser waterfalls are more useful than a single score because they show where waiting actually happens.

Spend bytes deliberately

Remove resources that do not change the page. Compress text responses with Brotli or gzip, keep JavaScript close to the interaction that needs it, and cache versioned static files. A cache-busting version parameter lets a long-lived cache coexist with safe updates.

Keep delivery accessible

Performance work should not remove readable text, keyboard navigation, labels, or useful error states. A page that loads quickly but hides its main action behind an inaccessible control is not a better experience.

The best optimization is often a request the browser never had to make.

A repeatable check

  1. Record a cold load and a repeat load on the target device.
  2. Compare compressed and uncompressed transfer sizes.
  3. Inspect cache headers and make sure updates have a version path.
  4. Test the same flow with JavaScript disabled where practical.
  5. Run keyboard and narrow-screen checks before calling the work finished.

Sources and further reading

Use the web.dev performance course, MDN Web Performance documentation, and Chrome Lighthouse documentation as primary references.