
Site Speed Checklist:
Optimize Images, Caching, CDNs & Critical CSS
When it comes to web design, one of the most important factors affecting user experience and SEO is site speed. A slow website can lead to frustrated visitors, higher bounce rates, and ultimately, lost business. In fact, according to studies, a delay of just one second can lead to a 7% reduction in conversions. That's why ensuring your website loads quickly is crucial. This checklist will walk you through the main areas to optimize your website speed: images, caching, content delivery networks (CDNs), and critical CSS. By following these steps, you can significantly improve your website’s performance and offer users a smooth, fast browsing experience.
1. Optimizing Images
Images are often the largest assets on a web page and can contribute significantly to load times. Optimizing images ensures they load quickly without sacrificing quality. Here are key strategies to follow:
1.1 Choose the Right Image Format
Choosing the appropriate image format is crucial for maintaining a balance between quality and file size. There are a few common formats to consider:
- JPEG: Ideal for photographs or images with many colors. JPEG images can be compressed quite a bit without losing much quality.
- PNG: Best for images that require transparency, such as logos or icons. PNG files can be larger in size than JPEGs, so they should be used sparingly.
- WebP: A newer image format that provides superior compression and quality. It can reduce file sizes significantly compared to JPEG and PNG, making it an excellent option for web use.
- SVG: Ideal for vector-based images like logos and icons. SVGs are scalable and typically have smaller file sizes compared to other formats.
1.2 Resize Images
Ensure that the images you're using on your website aren’t larger than necessary. For example, if you’re displaying an image at 600px wide, don’t upload an image that is 3000px wide. This will only result in unnecessary file size bloat. You can use image-editing software like Photoshop or free tools like TinyPNG to resize and compress your images.

An image that was originally 6MB in size, after resizing and changing its format, can be compressed to 21kb, which is 99% smaller.
1.3 Image Compression
Using image compression reduces the file size without significantly affecting quality. Tools like ImageOptim, TinyPNG, and JPEGmini can help you compress images effectively. There are also automated tools like ImageMagick and EWWW Image Optimizer that can optimize images during the upload process to ensure that only compressed versions are used.
1.4 Lazy Loading
Lazy loading defers the loading of images until they are needed — typically when the user scrolls down to them. This can greatly improve your website's load time, especially for pages with multiple images. For example, if your page includes multiple images but only a few are visible on the initial screen, lazy loading ensures that the browser only loads images that the user is about to see.

1.5 Responsive Images
Make sure that your website loads appropriately sized images based on the user's screen size. You can implement responsive images using the srcset attribute in HTML. This allows the browser to choose the most suitable image based on the device's screen resolution and size, improving load times on mobile devices.
2. Effective Caching
Caching is one of the most powerful tools for improving website speed. It allows browsers to store copies of your website's assets locally, so they don’t have to be downloaded every time a user visits your site. This can dramatically reduce load times on repeat visits.
2.1 Leverage Browser Caching
Browser caching stores static assets like images, CSS files, and JavaScript in the user's browser cache. This means that on subsequent visits, the browser can load these assets from the cache instead of downloading them again, reducing the time it takes to load the page. To implement browser caching, you'll need to configure the HTTP headers to instruct the browser to cache certain resources for a specific period.

Think of cache as your browser remembering the webpages it’s already seen.
Example configuration for Apache servers:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
2.2 Server-Side Caching
Caching isn’t just limited to the client side. Server-side caching stores dynamically generated content, reducing the time it takes to generate a page on each request. Popular caching methods include:
- Page Caching: Stores entire HTML pages, so they don’t have to be regenerated on each visit.
- Oject Caching: Caches frequently accessed data, like database queries, to reduce the load on your database.
- Opcode Caching: Caches the compiled PHP code, so it doesn’t need to be parsed and compiled on each request.
Tools like Varnish Cache, Memcached, and Redis can help improve server-side caching.
2.3 Content Expiry
Set expiry dates for resources that don’t change frequently, such as images, CSS, and JavaScript files. This tells the browser how long it should keep the file in its cache before re-fetching it from the server. For example, you can set an expiration date of one year for static files like images, and a shorter expiry date for assets that change more frequently, like JavaScript and CSS.
3. Using Content Delivery Networks (CDNs)
A Content Delivery Network (CDN) is a distributed network of servers that deliver web content, such as images, JavaScript, and CSS, from a server closest to the user's location. By using a CDN, you can speed up content delivery and reduce latency.
3.1 What Does a CDN Do?
A CDN distributes your website's static assets across a network of servers around the world. When a user accesses your site, the CDN serves content from the server geographically closest to them, reducing the time it takes to download files. This is particularly important for global audiences, as it reduces the distance data must travel.
3.2 How to Implement a CDN
To integrate a CDN with your website, you’ll first need to choose a provider. Some popular CDN services include:
- Cloudflare: Offers a free CDN with a range of performance optimization features.
- Amazon CloudFront: A pay-as-you-go service with flexible configuration options.
- KeyCDN: A cost-effective option with a pay-per-use model.
Once you’ve selected a CDN provider, you’ll need to update your website's URLs to point to the CDN instead of your own server for static assets like images, CSS, and JavaScript. Most modern CMS platforms, such as WordPress, offer easy integration with CDNs.

3.3 Optimize CDN Caching
Many CDN providers allow you to set caching rules to control how long content is stored on the CDN’s edge servers. Ensure you configure the cache settings for different types of content appropriately. For example, you might want images and static assets to cache for a longer period, while JavaScript and CSS files should be updated more frequently.
4. Critical CSS
Critical CSS refers to the essential CSS needed to render the above-the-fold content on your website. Loading non-essential CSS can delay the rendering of a page and contribute to a poor user experience. By isolating critical CSS and ensuring it loads as quickly as possible, you can improve the perceived load time of your website.
4.1 Identify Critical CSS
To optimize critical CSS, you must first identify which CSS styles are needed to display the content that appears above the fold — the portion of the page visible before scrolling. Tools like Critical (a Node.js package) or PurgeCSS can help you extract only the CSS needed for above-the-fold content.
4.2 Inline Critical CSS
Once you've identified the critical CSS, the next step is to inline it directly into your HTML document. This allows the browser to apply the styles immediately without having to wait for an external CSS file to load. You can use tools like Penthouse or Critical Path CSS Generator to automate this process.
4.3 Defer Non-Critical CSS
For the rest of the CSS that isn’t required for above-the-fold content, you should defer its loading until after the initial page load. This can be done using the media="print" trick or by loading the non-critical CSS asynchronously with JavaScript.
Example of deferring CSS:
<link rel="stylesheet" href="non-critical.css" media="print" onload="this.media='all'">
Conclusion
Site speed is a vital aspect of web design that should not be overlooked. By optimizing images, implementing caching strategies, using CDNs, and prioritizing critical CSS, you can significantly improve your website’s load times. Faster websites lead to better user experiences, higher search engine rankings, and improved conversion rates.
With the right strategies in place, you can ensure that your website performs optimally across devices and locations. Take the time to follow this checklist, and your users will thank you for the fast, seamless browsing experience.
Sources:
1. https://developers.google.com/speed
2. https://web.dev/learn/performance/image-performance
3. https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control
4. https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/Lazy_loading
5. https://www.cloudflare.com/learning/cdn/what-is-a-cdn
6. https://web.dev/articles/defer-non-critical-css
7. https://www.filamentgroup.com/lab/load-css-simpler