This is Founder's blog

How I Improved My SEO Rankings In Just 30 Minutes

Oct 13 2015 :: by Alex

TL;DR: You can use a CDN service (free, no technical knowledge required) to minimize your TTFB - "Time to First Byte" - which turns out to be an important SEO metric.

Google Page Speed Score is not enough

Google's Page Speed Insights provides some great tips on how you can optimize your page load times:

  • Remove all render-blocking content, move scripts just before the </body> tag and load everything asynchronously
  • Optimize, minify and GZip the sh*t out of your website
  • Reduce the number of (blocking) HTTP requests
  • Love your mobile users
  • etc. etc. etc

But while all these tips are great, Page Speed still misses one important thing.

Introducing TTFB

TTFB means "Time to first byte". Wikipedia describes this as "the duration from making an HTTP request to the first byte of the page being received by the browser". You can measure your TTFB using the "Network" tab in Chrome's Developer tools.

TTFB is a hugely important SEO factor. Moz has even published a report analyzing thousands of websites and discovering that TTFB highly correlates with the websites' rankings, both for popular keywords and the "long-tail".

I understand that "correlation does not mean causation", but my data proves that in this case - it kinda does.

TTFB optimization can be platform specific

While there are some platform-agnostic tips for improving your TTFB (like moving away from shared hosting to a VPS or a dedicated server, fast network connections, using a CDN etc.) optimizing TTFB is highly specific for each platform. Basically most of the techniques involve some kind of server-caching ("OpCache" for PHP, built-in server-side caching for ASP.NET and Ruby-on-Rails, etc.)

But what about non-technical people? Or someone who can't afford paying for a dedicated box?

Enter CDN

If your website is not using a CDN "reverse-proxy" service like CloudFlare or Incapsula - you're missing out. For those who don't know what they do: basically they run a sh*t-ton of fast nginx-webservers all over the planet, that serve your static content from the location closest to the visitor. That's it. With some icing on the cake like DDoS protection, JS/CSS minification, image optimization etc. I will stick to CloudFlare for the sake of this post simply because we use them historically but I heard nice things about Incapsula too (I heard they are actually more tweakable).

Now a CDN actually increases the TTFB times. Because it adds an extra "hop" between your server and the user. This is by design. They don't cache HTML (unlike JS/CSS/images), they take it from your webserver, every time. And this obviously increases the latency. CloudFlare even published a blog post claiming that "Time to first byte is not important". Yeah, right, uh-huh.

The only way to skip this extra "hop" and minimize TTFB is to serve HTML right from the Cloudflare's server - by using their cache everything setting. Most of my website's pages are dynamic, but it's OK to cache them for a couple of hours. Or even more since you can purge the cache via CloudFlare's API.

Enabling HTML cache

Enabling HTML-caching in CloudFlare is not straightforward. You have to create a "page rule". Probably more than just one. Keep in mind that their freemuim plan is limited to 3 page rules (not sure about Incapsula's limitations).

  • Log in to your CloudFlare dashboard, click your domain
  • Click "Page rules"
  • Create a rule with this pattern www.website.com* (note the asterisk)
  • Set the caching dropdown to "cache everything"

IMPORTANT: mind these pitfalls

  • Disable caching for highly dynamic areas like: admin-pages, a forum, API endpoints and similar - by creating extra "page rules" with patterns like www.example.com/admin* or www.example.com/forum* and moving those up in the list of rules at Cloudflare.
  • Check your ajax-ed pages they might stop working because the server returns the same cached response every time. The easiest fix would be to use $.post instead of $.get in your JavaScript because CloudFlare does not cache POST-responses.
  • Something specific to your site. Just ask yourself: which areas of my site are highly dynamic and involve user interaction?

Yes, you will have to reset your cache every time you publish new content to your website. Or just wait a couple of hours until it refreshes by itself. If you're technical - you can simply adjust your CMS so it sends an API request to reset the CDN's cache.

Anyhow. I was able to reduce my TTFB from 300-500 milliseconds (which was not that bad) to whooping 40-80 milliseconds! Not bad huh? It's been only 24 hours but I can see some movement in my rankings. Even if its just a coincidence - this has hugely improved my site's UX, which will result in lower bounce rates and less "pogo sticking", which in turn will eventually lead to better rankings... We'll see.

'How I Improved My SEO Rankings In Just 30 Minutes' was written by Alex by Alex. CEO, founder