Hyper fast wordpress
How to speedup wordpress without without changing your website.
Not one of my regular deeply technical posts but not any less valueable.
You’re probably here because you have a Wordpress based website and are not too impressed with the performance. There are a few approaches to make your content Hyper Fast ;-)
- use a cache plugin with minimal changes to the site
- use a cache plugin to build a static version of the site
- migrate content to a static site generator ( hugo / pelican / jekyll)
- cache your site in a cdn and purge when you update content
Today we are looking into the last one, cache everything at a cdn and purge on updates. Let’s go trough the steps:
This is where your content will be cached.
Setup DNS and CDN
After you’ve created your account you need to start using cloudflare’s dns servers. This if done carefully, can be done without any downtime or hickups.
- Create the domain in your cloudflare account (this is in the sign up procedure if I recall correctly)
- Copy all the DNS records from your existing DNS provider to cloudflare trough their excelent web interface. Except the NS records, we’ll do these last.
- Make sure you have no orange clouds behind your records, we will enable their cdn later.
- You can make some dns requests with
digto compare old and new dns servers: (you can find your cloudflare dns servers in the web pannel)
domain="aapjeisbaas.nl" # find your current nameservers: dig +short ns $domain # find your cloudflare nameservers: dig +short ns $domain @ns.cloudflare.com. # compare some records dig +short a $domain dig +short a $domain @ns.cloudflare.com. dig +short a www.$domain dig +short a www.$domain @ns.cloudflare.com. dig +short mx $domain dig +short mx $domain @ns.cloudflare.com. dig +short txt $domain dig +short txt $domain @ns.cloudflare.com.
If the results from your current and cloudflare’s dns servers match you can carry on to the next step.
Start using cloudflare’s nameservers
So your old and new DNS setup match, now we need to replace the NS records at your registrar. Most of the time the place where you bought your domain has a way to change your nameservers. Change them to the records provided by cloudflare, you can double check with:
# find your cloudflare nameservers: dig +short ns $domain @ns.cloudflare.com.
To check if you changed your Nameservers correctly at your registrar use the following commands, keep in mind that this may take a few hours to be reflected in the results:
# output should contain cloudflare nameservers whois $domain # output should look like: # aida.ns.cloudflare.com. dns.cloudflare.com. 2029044598 10000 2400 604800 3600 # \_ Your 1st nameserver \_ contact \_ serial \ \ \ \_ ttl # \ \ \_ expire # Changes in your dns wil increase the serial \ \_ retry # \_ refresh dig +short soa $domain dig +short soa $domain @184.108.40.206 dig +short soa $domain @220.127.116.11 dig +short soa $domain @18.104.22.168 # output should only contain your cloudflare nameservers dig +short ns $domain dig +short ns $domain @22.214.171.124 dig +short ns $domain @126.96.36.199 dig +short ns $domain @188.8.131.52
Try to send some mail cross domains, recieve some mail cross domains. visit your website from multiple machines and devices.
To use cloudflare’s CDN goodness simply click on the cloud behind a DNS record in the dns admin interface. When it is orange with the arrow trough it, it is active.
Install 2 plugins to get the most out of this setup
To cache your pages at cloudflare for as long as you want: https://wordpress.org/plugins/cache-control/ Increase s-maxage to 604800 to cache for 1 week, you can leave the other options default.
To clear the cache when you update your site:
After install connect it with your cloudflare account to allow your site to clear the cache.
When your api connection is set up click the
optimize for wordpress button to tweak some settings.
Take it up a notch
To cache all the pages you serve create a page rule for
*testdomain.com/* with setting
Cache level: Cache Everything
If you have any questions feel free to leave them below, if you want personal advice on how to optimize your specific website contact me