Sam's ultimate web performance tool and resource list

about 1 year ago

While preparing for my talk at Codemania I started filling my slides with links, clearly not something that scales. So, instead, here is a big list of interesting tools and resources that can help you journey through the murky waters of web performance.

Online page testers

  • Recommended: Web Page Test – The best free multi browser test platform.
  • Other similar tools are: Page Analyzer, Pingdom full page test
  • There are also monitoring tools with page test integration showslow, GTmatrix
  • REDbot is handy tool for cache validation. Are you missing an Expires or Cache-Control header?
  • HTTP Archive keeps historical performance snapshots of many sites online. See how your site has done over the last few years.
  • Zoompf (pay) offers a full site optimisation solution, the blog is well worth reading.

In browser waterfall UI

A key tool for analysis of any web performance issues is the waterfall UI. See also this Steve Souders blog post on waterfall UI conventions.

  • Recommended: Google Chrome – clean UI, option to disable cache, best waterfall UI. (CTRL-SHIFT-I) – note: Safari ships with the same tools – slightly dated (enable the develop menu)
  • Opera and IE ship with similar tools. Firefox has Firebug. Additionally there is the non-free HttpWatch(pay) for Firefox and IE.

Browser plugins and performance auditors

  • RecommendedGoogle Page Speed – trickiest to install, however provides very comprehensive results and helps you perform optimisations
  • RecommendedYSlow – the original performance audit tool, now open source
  • RecommendedWeb Developer Toolbar very important for Firefox testing, allows you to easily disable cache or js.
  • Chrome Speed Tracer – A bit tricky to get running and provides an information overload, perhaps the richest performance profiler out there. Learn how much each selector is costing you.

PNG / JPEG Compressors

  • Recommended PNGOptimizer – Fast, excellent compression, nice GUI and optional command line
  • Notable mention: PNGQuant – Best compression, but loses quality (reduces palette to 256)
  • Other options: OptiPNG, PNGOUT, PNGCRUSH, PNGGauntlet (UI wrapper) and Trimage (UI wrapper for Linux, recommended by Johann)
  • Recommended Paint.NET – Most simple photo editing and re-compression tasks can be done here, nice jpeg compression preview.
  • JPEGmini – handy online tool for re-compressing jpeg files (recommended by Andy)

Sprite utilities and Data Uri tools

Web accelerators

  • Recommended Google’s mod_pagespeed – Comprehensive, after-the-fact optimiser. Automatically compresses CSS/JS, creates sprites, inlines small scripts, optimises browser rendering and more. Easy to set up as a proxy using Apache mod_proxy.
  • Recommended Request Reduce – IIS only. Bundling, minification and spriting.
  • For web accelerator as a service look at blaze.io(pay) (now owned by Akami) and strangeloop networks(pay).
  • Aptimize (pay) offers an IIS plugin similar to Request Reduce.
  • CloudFlare CDN + site accelerator service, requires you point your DNS records at CloudFlare. Yottaa(pay) and Torbit(pay) offer a similar service.

I need help choosing a CDN

  • Recommended CDNPlanet – list information about most CDN offerings out there. They also offer a service that allows you to measure your CDN performance for free.
  • Recommended Cloud Climate – see various CDNs performance in your browser

Debugging proxies and latency simulators

  • Recommended Fiddler must have debugging tool, many advanced features. Also see: StressStimulus a load testing extension.
  • Recommended DUMMYNET – the only way to properly simulate a high latency connection, all the rest do not operate at the TCP level so do not properly simulate TCP slow start. ipfw is already installed on all Mac OS X machines by default. On FreeBSD you will need to recompile the kernel for DUMMYNET support (well worth it though). Also works on Windows x32 as a ndis driver (no x64 support)
  • CharlesProxy (pay) multi-platform web debugging proxy

JavaScript loaders

Often loading JavaScript files synchronously can be the slowest part of your page.

  • LabJS appears to be the de-facto standard async js loader
  • There is a great matrix comparing all the loaders at on the defer.js page
  • Check out this presentation by @aaronpeters

JavaScript tools and libraries

  • jsPerf: community driven JavaScript performance testing playground
  • bommarang.js: open source library for measuring client side performance

Production web profilers

  • Recommended MiniProfiler (.NET, official Perl/Ruby port in progress) – clearly being the a co-author I would recommend this, try it out – you will love it. There is also a PHP fork.
  • Google App Engine Mini Profiler (Python, Free) – a similar tool to MiniProfiler by Ben Kamens.
  • Recommended New Relic (Lite version is free) – birds eye profiling of your production app, been around for quite a few years, extensive reporting.
  • Recommended Google Analytics contains a feature that allows you to track client side performance, but be warned, you are going to need to filter out some data.

Profilers and web profilers

  • dynaTrace AJAX Edition (pay): part performance auditor, part JavaScript profiler it attempts to automatically catch what is making your page slow. Windows only, I could only get it to work in IE.

JS / CSS minifiers and compressors

Network capture tools

  • Recommended Wireshark the de-facto standard, cross-platform GUI for capturing and analyzing network traces
  • Microsoft Network Monitor very easy to install and run Windows specific network capture tool.
  • TCPDump probably the only tool you would run in production, ships with Linux/BSD/Unix systems
  • Visual Roundtrip Analyzer – this is a very unique tool, a performance auditor with packet capture built in. Well worth a play, though I would be careful acting on some of the analysis.

Web load testing tools

  • WCAT Lightweight tool by Microsoft for load testing sites
  • JMeter Open source Java based web load tester

The future SPDY and beyond

  • SPDY white paper – very important read, SPDY solves many of the performance problems inherit in HTTP
  • RFC 3390 increasing TCP initcwnd to 10. The objection from Jim Gettys.
  • pjax – pushState + Ajax – this is a relatively new technique for having 1 page apps that look and feel like multi page apps. This allows you to share layout and header/footer and js parsing between pages. Used at 37signals.
  • My article about IW 10 (now enabled at Stack Overflow) – How to enable IW-10 on Windows.

Backend performance

It is true, usually the Golden Rule applies, optimising the backend is often the least bang for buck you can get. However, backend performance can not be ignored. Some sites are paying the largest amount of performance tax due to backend issues.

  • recommended .NET memory profiler – My favourite memory profiler for .NET, it also works in production. If you have too many objects in your managed heap your whole app will start stalling. This will help you find it.
  • recommended CPU Analyzer – a tool I wrote, allows you to track down WHY your CPU is pegged at 100% in production. (.NET only) This tool has saved us many many times.
  • recommendedSQL Server Profiler I love the flexibility and power SQL Profiler offers, if you are running Microsoft SQL Server you really should learn to use it.

Important blogs and web resources

Miscellaneous tools and links

  • Stack Exchange Data Explorer – SEDE allows you to run db queries in your web browser and easily share results, we use it internally to perform analysis on our web logs (that are stored in a specific SQL Server instance). You can see a live demo here.
  • Web Performance Cheat Sheet – a bunch of stats correlating performance to your site’s success.

Note: I will be updating this list, if there is anything I missed, please let me know in a comment.

Comments

Chad Moran about 1 year ago

I’m very much looking forward to the ruby port of the MVC Mini Profiler <3

Justin Thomas about 1 year ago

Awesome. Thanks Sam!

Andy Davies about 1 year ago

One thing to watch with page waterfalls in Chrome is that JS & CSS from extensions get’s included in the waterfall and this can muck up the timings.

For compressing JPEGs I’d currently recommend http://jpegmini.com/

funomy about 1 year ago

Hi Sam, nice reference. You can get more information related to WPO on Funomy’s blog http://www.funomy.com/blog (Only Spanish for now)

Johann about 1 year ago

I’d add Trimage to the list because it unifies several PNG compressors and supports drag&drop.

Zac about 1 year ago

Thanks Sam, great list. Any recommendation for Silverlight performance tool?

not really sure, have not done any silverlight work, it seems that from silverlight 4.0 and above you can use traditional profilers like ants, earlier versions you can use xperf http://stackoverflow.com/questions/55943/how-to-profile-a-silverlight-application — Sam

Jacob Share about 1 year ago

Great list.

I use Pixresizer to resize and compress directories of images at one time:

http://bluefive.pair.com/pixresizer.htm

Mehdi about 1 year ago

Awesome… Thank you for sharing!

Rajesh about 1 year ago

Wow.. Astonishing info

Brad about 1 year ago

Hi Sam… I know our list of live free web performance tools www.dotcom-monitor.com >Tools were originally mentioned in Tamara Weinberg’s book The-New-Community-Rules-Marketing:Marketing on the Social Web …and since then we’ve added more….and yes we can monitor the performance of Silverlight

Binoj Antony about 1 year ago

And not to forget dapper!! Since there is no point in making the client load fast unless your page is served is equally fast! And page is served fast when your ORM is fast!

flattered :) a bit worried about getting into ORM battles here (even though we all know dapper is very fast) — Sam

Ahmed Araby about 1 year ago

Thanks alot :)

Prasad about 1 year ago

Awesome … Thank you for sharing!!!

Andrew about 1 year ago

Really appreciated your talk at Codemania today. Thanks for taking the time out :)

Thank you! If you have any questions feel free to ping me on twitter or email.

— Sam

Josh Fraser about 1 year ago

This is great! Thanks for putting this list together. Any chance you could add Torbit (torbit.com) under the web accelerators section? Thanks!

no probs, keep up the blog :) — Sam

Chris Weekly about 1 year ago

Good list, thanks for sharing. Nit: YOTTAA has two As. :)

apologies Chris, fixed it up, love the blog – keep up the blogging :) — Sam

Otis Gospodnetic about 1 year ago

Great list, bookmarked :)

Sematext SPM monitors Apache Solr, Apache HBase, ElasticSearch, SenseiDB, etc…. as well as any Java Apps!

Here are some links to SPM: http://sematext.com/spm/index.html http://sematext.com/spm/solr-performance-monitoring/index.html http://sematext.com/spm/hbase-performance-monitoring/index.html

Tammy Everts about 1 year ago

Thanks so much for the Strangeloop mention, Sam. I just want to mention that, in addition to our Site Optimizer service, we also offer an appliance, which is preferred by our enterprise customers (such as eBay/PayPal) and other customers who need to accelerate behind the firewall:

http://www.strangeloopnetworks.com/products/overview/

Your readers might also be interested in checking out the blog of our president, Joshua Bixby:

http://www.webperformancetoday.com/

Great list. Thanks for sharing!

shashikiran about 1 year ago

fantastic blog, this is what i am looking. webpage test is a great service

Jalpesh Vadgama 12 months ago

Nice set of rules. Really Helpful!!

armand 12 months ago

Great list here… i’ve directed many people to this page

thanks

Cloud Backup 7 months ago

Super awesome list. Although, I haven’t found much luck using CloudFlare and always ran into issues.

Nick 3 months ago

One more tool to bookmark http://compresspng.com