CDN Questions
CDN support articles: all you need to know about 20i's free content delivery network that will speed up your website.
How do I use 20i's CDN?
20i’s CDN is quick and easy to use.
Manage the package you want to enable our 20iCDN for and locate the CDN section.

To activate the main Edge Caching element of the CDN, select Edge Caching - select the toggle to activate it (Manage Hosting > Manage > Edge Caching).

There’s nothing more you need to do! All static content on your website will now be cached automatically and served from the CDN node closest to the website user's location.
How do I purge the cache?
To purge the cache that's stored at the CDN node head to the Edge Caching section and select the Purge Everything button.

For more information about the 20iCDN please see the guide here: What is 20i's CDN?
Austin B.Does the 20i CDN perform cache warming?
Yes. The 20i CDN performs cache warming to ensure cached pages are served as frequently as possible, to as many users as possible.
When a user requests a web page, a cached copy is stored at the 20iCDN node closest to where they made the request.
If another user requests the same web page and uses the same CDN node they’ll be served the ‘warmed’ cache generated by the first user. This ensures that they get a cache HIT on their first visit, meaning that the website will load faster.
Austin B.How is SEO affected by 20i's CDN?
With 20i’s CDN, you’ll get a Website Acceleration Suite which gives you the tools to help get your Google PageSpeed Score to 100/100.
Austin B.How long is website data cached for at a CDN node?
The CDN itself is used to cache static content. By default, the following file types are cached for 60 minutes before being purged automatically.
| bmp | class | css | csv |
| doc | docx | ejs | eot |
| eps | gif | ico | jar |
| jpeg | jpg | js | mid |
| midi | otf | pict | |
| pls | png | ppt | pptx |
| ps | svg | svgz | swf |
| tif | tiff | webp | woff |
| woff2 | xls | xls2 | robts.txt |
The 20iCDN comes free with all shared and Managed Hosting.
Austin B.Do I need caching plugins in addition to the 20i CDN?
The short answer is no, the 20i Content Delivery Network takes care of caching for you. The free 20iCDN caches static content and stores it until it's purged via the Edge Caching section in My20i.
This means you shouldn’t use any additional caching plugins such as W3 Total Cache or WP Super Cache.
We handle optimisation via the Website Acceleration Suite. The module improves website load times by automatically implementing web performance best practices to a website. This includes optimising images, JavaScript minification and combining CSS – all to improve website load times.
Therefore, you don’t need plugins such as WP Smush, Lazy Loading, EWWW Image Optimizer or Autoptimise.
Austin B.CDN Statistics
With the free 20i CDN, you can get an understanding about the traffic and requests accessing your sites.
Detailed data sets are collated and presented in charts for each of your sites at 20i, giving you insights about your site’s performance.
Accessing site Statistics
You can access the statistics for each site you host from the package overview page with your My20i account.
- Head to Manage Hosting
- Select the package you wish to view the statistics for by selecting Manage
- Select Statistics

You’ll be presented with the CDN Statistics overview with the option to switch to the Traffic Distribution view.
Total Bandwidth - This refers to the amount of data (in bytes) sent through the 20iCDN to the client. This is split between data that’s been served from the origin server (uncached bandwidth) and served from the CDN nodes (cached bandwidth).
Total Hits - This refers to the number of files and sessions that have been transferred using the CDN network, it’s important to note that this isn't the same as ‘unique visitors’.
You can filter the statistics by a time period using the toggles at the top-right of each section.

Traffic Distribution
The statistics also show geographic overview of incoming requests to your side. This can also be toggled between Last Hour, Last Day and Last Week.
You can hover over a country to see figures for that location.
Understanding the Statistics
The underlying datasets that 20i captures and processes share the following characteristics:
- All metrics reflect HTTP traffic captured through 20iCDN network infrastructure
- 20i does not process HTTP traffic for unproxied web hosts
- In determining the originating country, 20i uses the IP address associated with each request
Understanding Apparent Data Discrepancies
As well as the characteristics described above, it’s possible that your 20i metrics will not fully align with data for the same site reported by other sources such as Google Analytics and other solutions.
Once 20i identifies a unique hostname for a request, we match such hostname with all registered server aliases for that hostname/domain. Therefore, the number of requests 20i show may be higher than the figures other analytics services report.
For example, Google Analytics and other web-based analytics programs use JavaScript on the web browser to track visitors. As a result, Google Analytics doesn’t record threats, bots, and automated crawlers because those requests typically do not trigger JavaScript.
Total Bandwidth
- Total Bandwidth - Total amount of bandwidth (sum of bytes) served by 20i’s CDN network
- Cached Bandwidth - Amount of bandwidth for requests considered as “cached”, i.e., response is served from 20i CDN Cache
- Uncached Bandwidth - Amount of bandwidth for requests considered as “uncached”, i.e., response is served directly from backend server
Total Hits
- Total Hits - Total number of requests captured by 20i’s CDN network.
- Cached Hits - Number of requests considered as “cached”, i.e., response is served from 20i CDN Cache.
- Uncached Hits - Number or requests considered as “uncached”, i.e., response is served directly from the backend server.
SSL Hits vs Non-SSL Hits
This graph shows the number of requests that are encrypted via the HTTPS protocol as opposed to the unencrypted HTTP protocol. If requests to a site such as http://example.com are made, this would constitute an insecure request.
You’ll want to ensure that as much as possible requests to your sites are made over HTTPS. Most often, this can be achieved using a 301 redirect, WordPress plugin, or ensuring the WordPress site and home URL utilise HTTPS. You will also need an SSL certificate to cover the site. You can apply the free SSL from within the hosting package.
HTTP Successful Requests vs Error Requests
Successful Request - These requests are defined as being all HTTP requests in the range of 200-399, such as '200 OK' requests or 301 Redirects.
Error Requests - These are defined as being HTTP requests ≥ 400, such as 404 Not Found requests or 503 Internal Server Errors.
It’s important that the amount of successful requests is maximised. If you’re seeing a higher rate of error requests, you should consider checking the access and error logs for any data about requests.
The 20iCDN comes free with all web hosting and Managed Hosting on a VPS at 20i.
Austin B.What is 20i's CDN?
The 20iCDN is a powerful, free content distribution network (or content delivery network) that uses physical, highly optimised servers across the world to cache the content of your websites served from the 20i platform.
Austin B.Why am I getting a 'Too Many Redirects' error?
'Too Many Redirects' errors are caused by sites stuck in a loop of redirects.
RewriteCond "%{REQUEST_URI}" "^/" RewriteRule ".*" "https://my.domain.com/" [L,R=301]In the above example, we have our condition:
RewriteCond "%{HTTP_HOST}" "domain.com$"Which states that, if the URL contains ‘domain.com’, redirect the site. However, this will lead to a loop, as our subdomain also contains ‘domain.com’, resulting in the too many redirects error.
A much better way to do this redirect would be instead to use:
RewriteCond %{HTTP_HOST} !^my\.domain\.com [NC]
RewriteRule ^(.*)$ http://my\.domain\.com/$1 [R=301,L]Which instead uses the condition:
RewriteCond %{HTTP_HOST} !^my\.domain\.com [NC]This checks to see if the URL is not the subdomain, and redirects the site if it’s not.
It’s worth looking through your rules and making sure this type of logical loop doesn’t occur.
If you’re unsure, try renaming your .htaccess file. If the error stops when doing so, something in that file is causing the loop itself.
Mixed Content
The term ‘Mixed Content’ refers to when parts of a website on HTTPS try to load content over HTTP. In more uncommon cases, this can result in a site correcting itself to HTTP, then redirecting to HTTPS, resulting in a loop between the two which causes the ERR_TOO_MANY_REDIRECTS.
In cases such as this, it’s best to temporarily remove any rules that may be enforcing HTTPS, and then updating all of your site’s URLs to ensure they’re either all on HTTP or all on HTTPS.
We have a full guide on finding and fixing mixed content here.
Force HTTPS Scripts
Some Content Management Systems (CMS) such as Joomla have options that can force HTTPS connections to your site as a part of the integration. Enabling these makes tweaks to the code to enforce this – however, if you’ve already included your own scripts to force HTTPS or are using 20i’s option to do so in the SSL/TLS area, then this could potentially conflict and lead to a loop.
Check your current CMS setup to see if any options to force HTTPS connections are enabled. If they are, disable or remove any other scripts or options that will be enforcing this to remove any conflicts.
Caching
Caching can also cause a redirect loop as site and server caching can store redirects, resulting in a rule that has been removed to continue to be used.
The quickest way to check to see if this is the case is to visit the site with a query string at the end, for example:
https://mydomain.com/?nocache
Anything after the '?' is ignored, so you can write anything. Doing so will bypass the cache on the site and force the site to load directly.
If the site then loads fine without the redirect error, you can confirm that caching is what's causing the redirect.
Check your site for any cache folders and clear them, and then clear the edge cache from within your package:
- Log into My20i and head to your Manage Hosting area
- Select Options > Manage on the hosting package you’d wish to edit
- Select Edge Caching from under the CDN section of the package

At the bottom of the Edge Caching page, select Purge Everything. The server cache will be cleared within a few minutes.
Now you should be free of the 'too many redirects' error. Get in touch with our support team if you need further help.
Why am I getting a cache status 'MISS'?
Headers returning x-cdn-cache-status MISS indicate the request was served by the origin 20i server. This means that the response was not found in the cache and so was fetched from the origin server. This could result in a longer time-to-first byte (TTFB) and a longer total load time. On pages you want to be cached you'd expect to see x-cdn-cache-status HIT.
A cache 'MISS', or 'BYPASS' status is usually caused under three main conditions:
- Browser cookies being set
- Conflicting caching plugins
- Cache-control headers set in a .htaccess file
- Being logged into /wp-admin
Browser cookies
When a cookie is in use on a webpage the CDN edge cache will automatically avoid caching the content. When present, cookies work with the PHP as the page is loaded in order to perform a unique action. When a page is served from cache, it’s already been generated previously by the server. If the page is cached, the cookie cannot be generated and perform its action with the page load as expected.
Some applications also use a PHPSESSID cookie which prevents pages from being cached, for example, WooCommerce sets a PHPSESSID. In many cases this cookie doesn't alter behaviour, so disabling the cookie is one way to optimise and configure your site to work best with cache.
We have an option you can use within StackCache to help with this.
- Log in to /wp-admin and head to StackCache which you'll find down the left-hand side.
- By default, Remove PHP Session Cookies Matching Empty PHP Sessions will already be set, but you may wish to try selecting Remove PHP Session Cookies From All Pages.
- Select Save Changes.
Once saved, log out of /wp-admin and try refreshing your site or page you're trying to ensure is cached.
Conflicting Caching Plugins
Our platform comes with various layers of caching built-in. One of the most effective of these caching layers, especially at scale, is our edge cache system.
Unfortunately, most cache plugins will interfere with this and as a result, we don't recommend running any caching plugins on your WordPress site.
This includes, but is not limited-to: W3TC, Super Cache, WP Rocket and Hummingbird.
Don't panic! You won't need them - all caching plugins are built for speed, and you can rest assured our StackCache plugin will do that hard work for you.
Cache-control headers set in a .htaccess file
Cache-Control and Expires headers can be set in the .htaccess file within the root directory for the site. These let you control various elements of how your site is cached, including preventing caching altogether.
If you were to add Cache-Control: no-store into a .htaccess file then the HTTP headers would serve a directive to prevent the site from caching and a cache MISS would be received via the HTTP headers.
If you receive a cache MISS then you should review your .htaccess file for any conflicting directives.
Being logged into /wp-admin
When you're logged into /wp-admin we'll always force a cache bypass in the HTTP headers to ensure WordPress admin is never cached. If you're trying to ensure your site is being cached you'll need to logout of /wp-admin first, and then test your site, otherwise, the site will never be cached.
Austin B.
Joshua Miner
Dominic Elford
Chris Wright