Skip to main content

Best practices to speed up your website

As mentioned by Jeff Atwood, ‘performance is a feature’. Having a fast and responsive web application really makes the difference. But how do you get there?

The best place to start is to have a look at the performance rules list created by the Exceptional Performance team at Yahoo. They have identified a number of best practices for making web pages fast. The list includes 35 best practices divided into 7 categories.

  • Content
    • Minimize HTTP requests
    • Reduce DNS lookups
    • Avoid redirects
    • Make Ajax cacheable
    • Post-load components
    • Preload components
    • Reduce the number of DOM elements
    • Split components across domains
    • Minimize the number of iframes
    • No 404s
  • Server
    • Use a Content Delivery Network
    • Add an Expires or a Cache-Control Header
    • Gzip components
    • Configre ETags
    • Flush the buffer early
    • Use GET for AJAX requests
    • Avoid empty image src
  • Cookie
    • Reduce cookie size
    • Use cookie-free domains for components
  • CSS
    • Put stylesheets at the top
    • Avoid CSS expressions
    • Make CSS external
    • Minify CSS
    • Choose <link> over @import
    • Avoid filters
  • JavaScript
    • Put scripts at the bottom
    • Make JavaScript external
    • Minify JavaScript
    • Remove duplicate scripts
    • Minimize DOM access
    • Develop Smart Event handlers
  • Images
    • Optimize images
    • Optimize CSS sprites
    • Don’t scale images in HTML
    • Make favicon.ico small and cacheable
  • Mobile
    • Keep components under 25K
    • Pack components into a multipart document

There’s also a tool available called YSlow which helps you to analyze web pages and suggests ways to improve their performance.

Popular posts from this blog

.NET 8–Keyed/Named Services

A feature that a lot of IoC container libraries support but that was missing in the default DI container provided by Microsoft is the support for Keyed or Named Services. This feature allows you to register the same type multiple times using different names, allowing you to resolve a specific instance based on the circumstances. Although there is some controversy if supporting this feature is a good idea or not, it certainly can be handy. To support this feature a new interface IKeyedServiceProvider got introduced in .NET 8 providing 2 new methods on our ServiceProvider instance: object? GetKeyedService(Type serviceType, object? serviceKey); object GetRequiredKeyedService(Type serviceType, object? serviceKey); To use it, we need to register our service using one of the new extension methods: Resolving the service can be done either through the FromKeyedServices attribute: or by injecting the IKeyedServiceProvider interface and calling the GetRequiredKeyedServic...

Azure DevOps/ GitHub emoji

I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.

Kubernetes–Limit your environmental impact

Reducing the carbon footprint and CO2 emission of our (cloud) workloads, is a responsibility of all of us. If you are running a Kubernetes cluster, have a look at Kube-Green . kube-green is a simple Kubernetes operator that automatically shuts down (some of) your pods when you don't need them. A single pod produces about 11 Kg CO2eq per year( here the calculation). Reason enough to give it a try! Installing kube-green in your cluster The easiest way to install the operator in your cluster is through kubectl. We first need to install a cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml Remark: Wait a minute before you continue as it can take some time before the cert-manager is up & running inside your cluster. Now we can install the kube-green operator: kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml Now in the namespace where we want t...