Affordable CDN for WordPress sites on a budget

If you’ve been running a website,  you certainly know that page loading speed is one of the most important factors. It affects your conversion, page ranking, user experience and more. Which means that having snappy, responsive site is a must these days.

There are many things things you can tweak to make your site run faster. And using CDN is one that can give you the most benefit.

In this post, I’ll show how you can choose affordable CDN provider and configure your site to get maximum performance. If you are ready, let’s get started!

Affiliate Disclosure
This post contains affiliate links, which means we earn a small commission if you buy products we recommend. Click here to learn more about our affiliate links policy

What is CDN, anyway?

Let’s start from the beginning. CDN (Content Delivery Network)  is a network of  computers  around the world which cache website content and distribute it to users near their locations. The goal here is to reduce latency of requests which fetch page assets, like images, videos, scripts etc.

The image bellow depicts operation of website without CDN (on the left side) and with CDN (on the right).

cdn for wordpress schematic
WIth and without CDN (By Kanoha [CC BY-SA 3.0 or GFDL], from Wikimedia Commons)

Without CDN, all use requests go to the site’s web server. This can lead to a few problems:

  • when there is large number of users, server can get overloaded and slow down
  • users who are geographically far from server experience degraded performance to physically long network lines

With CDN, these problems are mitigated. CDN stores the copy of your site’s assets (media, scripts etc.), so instead of  getting these assets from your server, your users get it from CDN server nearest to them. This help reduce the strain on your server, and also reduces latency for your users which are far away.

So, tha’s how CDN works in a nutshell. If you want to get into more technical details, there’s great post about how CDN works on KeyCDN.

CDN terminology

Before we dive deeper into intricacies of CDNs, let’s get some basic terminology first. We will use it throughout this post.

  • Origin server – this your site’s base web server. It is the source of all your content server by CDN
  • Edge server or POP (Point Of Presence) – these are individual servers in CDN network. They are the ones serving contents to your users based on their geographical location
  • Pull Zone – it is CDN configuration in which CDN pulls content from your server and caches it for your users without any action needed from your part. This is the most common usage mode
  • Push Zone – unlike previous configuration, you need to manually upload your data to push zone, so CDN can cache it. This is mostly used for large files (over 100 MB)

Do I really need a CDN?

In short, yes, you do. If you are serious about your website and want it run smoothly, having CDN will greatly improve it’s performance.

The main obstacle for many site owners to add CDN to their sites is the cost. If you use CDN providers like Cloudflare, Stackpath, AWS Cloudfront and similar, the cost can be really high. Especially if your site gets a lot of traffic.

The other aspect is technical difficulty of correctly setting up everything to work smoothly. Fortunately, setting up CDN for WordPress sites can be done in a few clicks.

In the rest of this post, I will introduce you to some really good CDN providers which can help you improve your site’s speed without breaking the bank. And I will also show you how to configure each of them to work with your WordPress site.

Once we’re done, you won’t have any excuse not to use CDN for your WordPress site!

How to find right CDN provider for your site

As you probably know, monthly CDN bill can be pretty hefty sum. Especially if you go with big names in CDN providers space. Fortunately for us, little guys, times are changing. We can now get top-notch CDN service  at affordable price.

The 3 providers we will compare here are:

  • KeyCDN
  • BunnyCDN
  • BelugaCDN

Int he rest of this post, we’re gonna pit these 3 against each other and see which one can get us most bang for our buck. We will test how easy they are to configure, how well they perform and what features they each offer. Finally, we’ll try to draw a conclusion about which one would be right for your  site.

Testing methodology

Let’s first explain how we will perform the testing. I’m trying to keep this as unbiased as possible, so we can have the level playing field for all three contenders.

Our testing site is plain WordPress installation running on shared hosting account on Bluehost (affiliate link). We will use sample post with some images and media files as target page for our testing. For testing, we will use Pingdom tools, and will measure page load time from several places around the globe. This should give us accurate picture at how  geographical distance from sever impacts page load time.

First, we will need to establish baseline, for page loading time without CDN. We performed 3 tests using Pingdom tools, from locations in New York, Stockholm and Melbourne. The results are following:

load time wothout cdn

New York location gives the shortest load time. This is expeted, since our shared hosting server is located in USA, so network roundtrip is the shortest. Page loads in 1.48 seconds, which is quite impressive for shared hosting.

Next location for testing is Stockholm. It yields longer load time, probably due to the fact that network latency is greater because of distance. {age loads in 2.36 seconds, which is over 60% increase. This means that your visitors from Europe will not be happy!

Final testing location is Melbourne, which gives us even longer load time. It’s almost 3 times longer then New York, so if you have a significant portion of site visitors from Australia, you really should take care of them.

Table bellow summarizes baseline results  for reference. With these results,we can now start testing our CDN providers.

  New York Stockhom Melbourne
Load Time (s) 1.48 2.36 3.92

How to configure CDN for WordPress

In order to  add CDN support to your WordPress site, you will need a plugin to configure it. Almost all WordPress caching plugins support CDN configuration, but in my experience CDN Enabler works the best for this kind of stuff.

CDN Enabler is quite simple and configuration takes only a few clicks. I’ve written about it in more details in the post about best Wordpres plugins, so you might want to check it out if you are interested. We will use this plugin to test our CDN setup.

KeyCDN

 KeyCDN (affiliate link) is our first contender. It is a Swiss based company with solid network of servers around the world. They have global network of 33 POPs, covering all continents.

cdn for wordpress keycdn

KeyCDN has quite extensive list of features, almost everything you can expect from CDN provider. They cover everything you need, like performance, security, content protection, reporting and so on. I won’t list all features here, but you can find complete list on KeyCDN features page.

Pricing

KeyCDN charges per GB of traffic, but unlike  bigger CDN providers, their prices are quite reasonable. They depend on volume of traffic and location of traffic. The more traffic you have, the lower is price per GB. Following table shows summary of KeyCDN prices:

The way KeyCDN works is that you pre-pay some amount of credit (minimum is $49), and then used bandwidth gets deducted from this amount. Credits expire after one year, so if you don’t consume all pre-paid bandwidth in a year, it won’t be rolled over. However, if you make additional payments within that year, your credits won’t expire.

There is 30-day free trial period, where you get 250GB of bandwidth and can use it to test how KeyCDN works. No credit card is required in trial period.

How to set up KeyCDN for your WordPress site

Setting up CDN support with KeyCDN account is extremely easy and won’t take you more then a couple of minutes. Once you login yo tour account, you will need to create a zone for your website. Simply click on “Zones” in left side menu and click “Add Zone” button. You will then need to fill out a form like this one:

In this form, you will need to enter only zone name and origin URL in this form. You can leave zone type as “Pull”, since this will automatically pull  content from your server. Zone name can be anything, but must be lowercase. Finally, in “Origin URL” field, enter base URL of your server, eg. https://mysite.com.

By default, SSL is not enabled for your zone. If your site is hosted on HTTPS, then you should also serve your assets over HTTPS, to avoid mixed content warning in browser. Fortunately, KeyCDN offers SSL support out of the box. You will need to check “Show advanced features” check box to open additional fields. Scroll down to “SSL”  section.

There are multiple options for  SSL, but shared is the easiest to use. With this setup, your content will be served from KeyCDN subdomain. If you feel like you need more control over your content, you can use more advanced SSL options.

When you are finished with configuration, simply click “Save” button at the bottom. KeyCDN will begin deploying your zone, and it may take a few minutes to finish. After it is completed, you should see your zones listed, similar to this:

On your web site, install CDN Enabler plugin, and open settings page. You will need to add only two pieces of information, like in the following image:

In the”CDN URL” field, enter the value of “Zone URL” from your zone configuration. Make sure you add https:// at the beginning, and no trailing ‘/’.  Also, make sure to check “CDN HTTPS” checkbox, to have your content served over HTTPS.

And that’s it~ you have fully functional CDN deployed in under a minute.

KeyCDN performance numbers

Now that we have everything set up correctly, it’s time to see what performance gains we get with KeyCDN. For this part of the test, I ran 3 Pingdom tests from each location we used to setup baseline (New York, Sotckholm, Melbourne), and took the best result.

Why three tests? Well, with pull zone, CDN needs some time to “warm up”.  The first time your page is requested, CDN needs to pull your assets and propagate them over the network. That means the first visitor that requests a page might actually get worse load time with CDN, since there is additional overhead. But, after that, performance should be better. That’s why I ran 3 tests.

Running the test from New York, we get load time of 1.07 seconds. This means we get over 30% improvement on page load time! Since this page had quick load time initially, this is a nice gain.

Running the same test from Sotckholm test point, we get page load time of 1.15 seconds. This is more then half of the original load time! Not too shabby.

Finally, for Melbourne test point, we get load time of 1.81 seconds. Again, less then half of the original load time.

In conclusion, we get more then decent improvement in performance with KeyCDN. What’s more important, we get equal performance for all our visitors around the world, which means you can target multiple international markets without performance degradation.

Let’s summarize the result of KeyCDN testing in this table:

  New York Stockhom Melbourne
Load Time without CDN (s) 1.42 2.34 3.96
Load Time with CDN (s) 1.07 1.15 1.81
Improvement (%) 24.6 50.9 54.3

Get started with KeyCDN for free

If you want to take a test drive of KeyCDN, you can get $10 worth of credit by clicking this link. This gives you 250GB worth of traffic which you can use within a year. With this amount of free bandwidth, you can get a good feel about how your site will work with CDN.

BunnyCDN

BunnyCDN is another great and affordable CDN provider. Based in Slovenia, their network  has 34 POPs over all continents.

Theiy offer extensive feature list which includes everything you might want from CDN provider. You can check out complete list of features here.

Pricing

BunnyCDN pricing is pay-as-you-go, just like KeyCDN. But, their prices are a lot lower to begin with. In addition, they have two pricing tiers: Premium and Volume.

Premium tier is the basic pricing tier. Prices start from $0.01 per GB for traffic from European and North American POPs. For POPs in Asia, Africa and South America, higher prices apply. There’s no volume discount in this tier.

You can see complete pricing table bellow. In addition, BunnyCDN pricing page also has pricing calculator, which you can use to estimate your monthly bill.

One additional option with this tier is that you can disable some regions. So, for example, if you don’t want to pay for traffic from Asia, you can turn it off when you create a zone.

Volume tier is special pricing plan for high volume sites. With this tier, you get lower prices as your bandwidth usage increases. And traffic rate is the same for all POPs around the globe. Although you will most likely never use this tier, it’s good to know it’s an option.

Payment works exactly like with KeyCDN. You prepay some amount of credit and your bandwidth usage gets deducted from it. Credits also expire after one year, unless you pay additional credits within that year.

BunnyCDN offers 14-day free trial, in which you get 1,000 GB bandwidth for free.

How to configure BunnyCDN for your WordPress site

If you thought KeyCDN setup is easy, then you will love BunnyCDN setup. You only need to fill two fields and you’re good to go.

Once you log in  to your account, select “Add pull zone”, You will get the following form:

You only need to enter name of the zone (can be anything) and origin URL (URL of your server). For example, here I named the zone myzone, and entered server address. Note the extension after zone name: this is the complete name of your zone, which you will need to use in CDN Enabler.

You don’t even need to configure SSL, because BunnyCDN will do that for you automatically. In few seconds, your zone is ready for usage.

Back in your website, you will need to configure CDN Enabler to use new zone you just created. Just like with KeyCDN, simply enter your zone’s host name as CDN URL. For example, if you named your zone myzone, then you should enter https://myzone.b-cdn.net as CDN URL.

It is also worth noting that BunnyCDN has it’s own Wordprpess plugin for easy configuration. But I find that CDN Enabler works just as good.

BunnyCDN performance numbers

Now it’s time to see how we’re doing performance-wise. We’ll use the same testing strategy like we did with KeyCDN. So, let’s see how BunnyCDN performs.

First we test from New York test point. And the result is impressive! Page loads in mere 804ms, which is almost half of the original result. I’m not sure if this is some super fast edge server BunnyCDN has in New York area, or just luck, but the result is amazing.

Testing from Stockholm gives the result much more inline with KeyCDN. This test loads the page in 1.05 seconds, almost the same as KeyCDN.

Finally, testing from Melbourne gives again almost the same result as KeyCDN. This time, page loads in 1.84 seconds.

So, the performance of BunnyCDN is almost identical to KeyCDN. But, with much lower prices, it might be better choice if you are on tight budget.

Let’s summarize test data for better overview:

  New York Stockhom Melbourne
Load Time without CDN (s) 1.42 2.34 3.96
Load Time with CDN (s) 0.8 1.05 1.84
Improvement (%) 43.3 55.1 53.5

BelugaCDN

Our final contender is Beluga CDN.  This is undoubtedly the cheapest option of all three, but it still  can compete on features. It features smaller number of POPs (28), but it’s performance is still great.

BelugaCDN offers features similar to KeyCDN and BunnyCDN: pull and push zones, HTTP/2, compression, real-time reporting and many more. The only drawback is somewhat unpolished user interface. More on that in  upcoming sections.

Pricing

Without question, BelugaCDN is the cheapest option of all three. Unlike the other two, they don’t offer pay-as-you-go plan, but rather predefined plans where you get monthly bandwidth allowance. BelugaCDN plans start at $5 per month. Theres is no option to roll over unused bandwidth, so what ever you don’t use will be gone.

You get 4 different options to choose from, and the price goes down with increase of traffic. In addition, this pricing structure is really simple. There’s no different price for traffic in different regions, all traffic is considered equal.

How to configure BelugaCDN for your WordPress site

After dealing with KeyCDN and BunnyCDN, configuring BelugaCDN zone turned out to be a huge pain. I’ll go through details here, so you can get the feel of how bad it turned out to be.

First thing you need to do is select subdomain from which CDN will serve your content. This is actually quite simple. For example, if your site is mysite.com, then you can enter something like cdn.mysite.com.

Next step is to set origin of your content. Easy enough, this is your domain name. Note that you don’t need to “http://” part, only your domain name.

The final step is quite a surprise. You need to set CNAME record for your CDN domain right away! This is something that could be skipped, or available as advanced option, as both other providers have it, but BelugaCDN requires you to set this up.

To be fair, you can use the default link which they provide, but it comes with it’s own set of problems, which I will describe later.

If you have configured DNS records before, this is not difficult task. But if you are new with this stuff, it could get tricky. Another pain point is that it takes time for DNS records to propagate, so it may take a while until your zone is ready.

With configured pull zone, I wanted to set up SSL for CDN. But, BelugaCDN does not offer shared SSL like other two provider, nor does it offer easy way to obtain one from Let’s Encrypt. Only available option is to configure custom SSL certificate you get from certificate authority.

Since I didn’t want to go through all this trouble, I decided to test BelugCDN over plain HTTP. This might not be fair to other two providers, so we will need to take this into account when interpreting results.

On CDN Enabler side, configuration is the same  as for the other two providers: simply enter your CDN subdomain into “CDN URL” field.

Performance numbers

After bad start with configuration, I didn’t have much faith to BelugaCDN. But, it turned out to have the best performance of all three providers. The fact that we didn’t use SSL for testing certainly has some weight, but performance is certainly on par with KeyCDN and BunnyCDN.

First test is from New York test point, as usual. And here we get 572 miliseconds of the original load time! Almost a third of load time without CDN. You could say that what BelugaCDN lacks in convenience, it certainly makes up in performance.

Nest test is from Stockholm test point. Here we get another great result with 1.19 seconds. Again, this is 50% speed up over initial result without CDN.

Final test is from Melbourne test point. Here we get 1.82 seconds load time. One more 50% improvement.

So, as you can see, BelugaCDN performance is on the level with KeyCDN and BunnyCDN. And being the cheapest option around, it is quite an achievement.

Here’s another table to sumarize these result.

  New York Stockhom Melbourne
Load Time without CDN (s) 1.42 2.34 3.96
Load Time with CDN (s) 0.57 1.19 1.82
Improvement (%) 59.8 49.1 54.0

Final verdict

We’ve reached the end of our CDN providers study. I hope you have understood how much CDN can improve your site’s performance, and that you don’t need a fortune to get decent CDN performance.

Now the question remains: which one of those three should you choose. Each of them has it’s strengths and weaknesses, so you might choose based on your specific requirements. Their performance is almost identical in each test, so you may want to choose based on other factors.

KeyCDN looks like most complete solution. It is feature rich, performance is excellent and it looks very polished and easy to configure. They plan to expand their network with more data centers, which will further add to their performance. The only drawback is that they are significantly more expensive then BunnyCDN and BelugaCDN. But, they are still far cheaper  their more famous counterparts (think Cloudfront).

BunnyCDN also seems like a good solution. It’s features and user experience are similar to KeyCDN. I especially like the ability to turn off some of the regions, if you want more control over your traffic cost. Coupled with great pricing, it is an excellent CDN for your WordPress site.

Finally, BelugaCDN. If only price mattered, they would be a clear winner. But, they leave a lot to be desired in terms of polish, ease of use and overall user experience. They are the only provider of those three, where I cooldn’t get HTTPS set up out of the box. But, if you don’t mind a bit more tweaking with settings, this is an excellent option.

My recommendation? Go with BunnyCDN! They seem to hit the sweet spot in terms of price, features and ease of use. And with 14-day trial option, it won’t cost you anything to try it out.

Your turn

OK, this was a long post, but I hope it was helpful. Now I want to hear your feedback!

Did you like this post? Do you feel like it was worth reading, or ti needs more information? Was there anything you hoped to learn here, but was missing? Finally, what could I do to improve the post?

Feel free to comment and let me know what you think.

2 thoughts on “Affordable CDN for WordPress sites on a budget”

  1. hi Admin;
    the way your blog looks is killer.
    I had not expected such a detailed article on affordable CDN for wordpress, but again it was awesome and incredible.
    By your blog I say repeatedly that content is the real king.
    Thanks
    Vipin

Leave a Comment

Your email address will not be published. Required fields are marked *