Benchmark your site with testing
Before you get started and make any changes to your site, it’s important to take some measurements and run a few tests to get some benchmarks. This will help you know exactly where you’re at right now and make sure the changes you’re making are actually improving your site (instead of making things worse)! To test the speed of your site, your best bet is a combination of WebPageTest and Google PageSpeed Insights. WebPageTest gives you a good idea of the actual time (in seconds) that a site takes to load, and these metrics will help you know whether it’s the back-end or front-end causing a site to load slowly. Google PageSpeed Insights is best for looking at how your site is rendered by the browser and can help you identify what you can improve on the front-end. Once you have these benchmarks, you’ll be able to start understanding where you can make the biggest improvements in your site. And remember: Once you make a change to your website, remember to test it again to see how it stacks up to your original numbers. This will save you some major headaches, just in case something has the opposite effect and slows your site down!
Finding a helpful WordPress host
Before we go any further, we need to talk about your WordPress host. No matter how much work you do on your end, at the end of the day, your host also plays a critical role in the performance of your site. While the price tag of shared hosting makes it seem like a bargain, it comes at a different cost: the risk of slow site speed, irregular performance, and frequent downtime. All things that affect the reliability and speed of your site. The stress isn’t worth it, especially when you have the ability to choose a managed WordPress host (like CloudWays!) that’ll take care of a huge chunk of your performance woes. With CloudWays managed hosting WordPress platform, you’ll get top performance out of even the highest traffic websites. Robust caching comes standard on every site, and you can always add a CDN to watch your site fly. Plus there’s always our top-notch support team, beautiful dashboard, and a whole plethora of features to help you build blazing fast WordPress sites.
Audit your plugins
The addition of plugins to a site can bring a lot of functionality and fun stuff that makes your site far beyond basic, but unfortunately, many bring a performance overhead with them. We’ve seen so many slow sites that are immediately cured just by deactivating a few plugins. The best way to avoid a migraine from managing plugins is to keep performance in mind as you are developing your site. You don’t want to spend weeks relying on a plugin, only for it to become the bane of your existence when you find out it makes your site extremely slow. Read reviews, test them regularly, and be sure you’re updating them to the latest version when it’s available. All this negative talk about plugins is only to make you aware of the potential risks involved when using bad ones. These are usually plugins that are developed by inexperienced programmers or those that make a ton of database queries and require intensive logic processing. However, there’s good news! There are thousands of worthwhile plugins that don’t make your users and readers frustrated when they crawl around your site. The magic trick is just to use those, and not the slow-performing ones. You can track down which plugins might be causing performance losses on your site quite easily. Take a quick look at our WooCommerce Plugins, you might be interested in them.
We generally use a plugin called Query Monitor that sifts through your whole site and reports back what percentage of total load time each plugin is responsible for using. If you’re serious about speed, you’ll run a test each time you activate a new plugin, to ensure you’re not installing something that will sacrifice speed. Plus, by benchmarking your plugins right off the bat, you won’t waste time messing with a plugin if it’s not going to perform well in the long run. If there are plugins that you just can’t live without but still make your site slow, there are ways to continue using them. Generally, if you determine that a plugin is loading slowly, the next step is to talk to your hosting company to increase the memory on your server. With CloudWays, that generally means upgrading your plan to the next level to get more memory and, thus, more speed. Eliminating the need to do this is the best plan of action, but there probably are a handful of plugins that you might find yourself not willing to ditch (WooCommerce, for example)
Caching is key to great performance
Caching, both on the server side and client side, is an important part of WordPress site performance. Once a user loads your site for the first time, you can take advantage of browser capabilities to cache the contents of that site locally, so on the next visit the user already has them loaded. Similarly, on the server side, having a caching layer works wonders for serving your site up very quickly. The most common way to enable server-side caching with WordPress is by using the W3 Total Cache plugin. This plugin (or one similar) is needed on almost all hosts. The exception to this rule is CloudWays; we handle server-side caching for you behind the scenes with Varnish. Using Varnish instead of a plugin can increase speeds dramatically because Varnish never has to talk to PHP. It serves up cached static copies of your site immediately (without even touching the PHP application layer), whereas plugins are still run by PHP. On managed hosts like CloudWays, the server-side caching tells the browser how long to cache things by setting “expires headers.” The browser won’t ask the server for more information if those headers tell it not to ask. You mainly have to start thinking about caching when you start installing plugins or third-party themes. Theme and plugin developers can set their own headers that can override your host’s default settings, adversely affecting the caching mechanisms. WooCommerce, for example, disables server-side caching by setting cookies. It’s typically not very apparent when plugins or themes disable caching, so a good thing to do is reach out to your hosting provider and ask that they force cache your site. Be careful not to force caching on pages that truly need cookies to work, though, such as WooCommerce cart and checkout pages.
The benefits of a CDN
A content delivery network (or CDN) is a network of servers that serves up your website and its assets from different locations based on the user’s location. For example, let’s say you’re not using a CDN and your site is hosted in San Francisco. When someone from, say, Barcelona visits your site, they have to retrieve all your assets from your server in San Francisco. The long distance between the two locations clearly takes longer than if someone from San Francisco loads your site that’s hosted in San Francisco. A CDN, on the other hand, serves your assets from a bunch of different servers based around the world, such as New York, Seattle, Omaha, Paris, London, Beijing, AND San Francisco (and many more). The idea is that users will hit the server closest to them and not sacrifice load time, since there’s a smaller distance between them and the server. With a CDN, that same person from Barcelona will now hit a datacenter in London or Paris, instead of San Francisco. Using a CDN will definitely increase the speed of your site for users throughout the world! Some of the most popular CDNs include Amazon Web Services, CloudFlare, and MaxCDN. Most of them have free plans, but if you pull a lot of visitors and have lots of assets, you’ll most likely have to pay for it. They’re typically pretty easy to set up.
Downsize your static assets
Now it’s time to take a look at your code. If you want to achieve optimal performance, there’s some work to be done with static assets prior to uploading them to your server. This work essentially comes down to compression and minification. You always want to serve the fewest amount of assets possible, compressed as much as you can, in order to make your site as fast as possible.
- You’re serving as few images as possible and
- Those images are compressed as much as possible
Compression tools are necessary for squeezing out as much excess as possible on images. ImageOptim is a great Mac app that does this well, along with OptiPNG and jpegtran for use with task runners like Grunt. TinyPNG is our go-to web-based compression tool. It can become cumbersome doing this with every image, though, and sometimes not even feasible if multiple people are contributing content. Thankfully, there are some WordPress specific tools available to help with this.
When you have multiple sizes of images that are cropped upon upload (usually defined in most themes), using an image compression WordPress plugin is particularly important. Even if the initial image that you uploaded is as trimmed and compressed as possible, when WordPress generates the new images from that, those new sizes won’t be compressed. We have used and recommend TinyPNG for WordPress and Ewww Cloud Optimizer to handle the compression and optimization of images uploaded to WordPress.
Write logical theme logic
There are many things you can do from a theme development perspective to make your back-end performance as high as possible. Nasty loops that do tons of comparisons and use lots of memory (if, if, if, else, if, else, so on) can definitely slow down the loading of a page, as all that logic takes time. There are lots of articles on performant PHP, but our best advice is to just take care in writing your theme logic! One tool that has saved us from a logic intensive loop taking forever to load is the Transients API. WordPress transients store cached data in the database temporarily, which means your logic only has to run once (whenever the first visitor loads the page) and then the results of that are stored in the database. The Codex has good documentation on the usage of transients, as well as a host of other articles found with a Google search.
Serve up static assets
Once your stylesheet is compressed and ready to go, the easiest (and by far, the standard) way to load it is to just reference it in the . That way, the browser loads and parses it before the rest of the DOM is loaded.
<head> <link rel=”stylesheet” href=”path/to/style.css”> </head>
<head> <style> /* all of your critical styles go here */ <style>
After you’ve gone through these performance-enhancing practices, if your site is still really slow, we’d recommend hiring a developer who can look into it and find the source of the problem and/or choosing a new WordPress host.