- Back to Home »
- Content Delivery Network
Content delivery network (CDN)
Problem: On average, 80% of
a website consist of static resources therefore accessing this static content
from its origin server is time consuming and makes the website slower. This
problem aggravates if the visitors of the website are from different geographic
locations.
Solution:
A CDN is
essentially a group of servers that are strategically placed across the globe
with the purpose of accelerating the delivery of your static web content.
CDN
servers cache static content like images, videos, CSS, JavaScript files, etc.
It enables the caching of HTML pages that are based on request path, query
strings, cookies, and request headers.
CDN users also benefit from
the ability to easily scale up and down much more easily due to traffic spikes.
How it works?
when
a user visits a website, a CDN server closest to the user will deliver static
content. Intuitively, the further users are from CDN servers, the slower the
website loads. For example, if CDN servers are in San Francisco, users in Los
Angeles will get content faster than users in Europe
How CDN improves load time?
CDN workflow:
1.
User
A tries to get image.png by using an image URL. The URL’s domain is provided by
the CDN provider. The following two image URLs are samples used to demonstrate
what image URLs look like on Amazon and Akamai CDNs:
• https://mysite.cloudfront.net/logo.jpg
•
https://mysite.akamai.com/image-manager/img/logo.jpg
2.
If the CDN server does not have image.png in the cache, the CDN server requests
the file from the origin, which can be a web server or online storage like
Amazon S3.
3.
The origin returns image.png to the CDN server, which includes optional HTTP
header Time-to-Live (TTL) which describes how long the image is cached.
4.
The CDN caches the image and returns it to User A. The image remains cached in
the CDN until the TTL expires.
5.
User B sends a request to get the same image.
6. The image is returned from the cache as long as the TTL has not expired.
Considerations of using a CDN:
•
Cost: CDNs are run by third-party
providers, and charges are incurred for data transfers in and out of the CDN.
Caching infrequently used assets provides no significant benefits so you should
consider moving them out of the CDN.
•
Setting an appropriate cache expiry:
For time-sensitive content, setting a cache expiry time is important. The cache
expiry time should neither be too long nor too short. If it is too long, the
content might no longer be fresh. If it is too short, it can cause repeat
reloading of content from origin servers to the CDN.
• CDN
fallback: You should consider how your website/application copes with CDN
failure. If there is a temporary CDN outage, clients should be able to detect
the problem and request resources from the origin.
• Invalidating
files: You can remove a file from the CDN before it expires by performing
one of the following operations:
• Invalidate the CDN object using APIs provided by CDN vendors.
• Use object versioning to serve a different version of the object. To version an object, you can add a parameter to the URL, such as a version number. For example, version number 2 is added to the query string: image.png?v=2.
Kinds of CDNs based on how the content is cached and refreshed?
There are two kinds
of CDNs based on how the content is cached and refreshed - Push CDNs and Pull
CDNs
Push
CDNs -
In Push CDN model, content is pushed to the CDN cache servers whenever content
is modified, or new content is added, on the origin server. Origin server is
responsible for pushing the content to the CDN cache servers
Pull
CDNs -
In Pull CDN model, content is pulled by the CDN from the origin server when
that content is first requested by a client. This content is then stored in the
cache servers for a certain period of time, usually 1-30 days based on the TTL,
so that subsequent requests for that content is served from the CDN cache
server.
Popular CDNs
Cloud providers typically offer their own CDN solutions, since it’s so popular and easy to integrate with their other service offerings. Some popular CDNs include Cloudflare CDN, AWS Cloudfront, GCP Cloud CDN, Azure CDN, and Oracle CDN.When not to use CDNs?
If the service’s target users are in a specific region, then
there won’t be any benefit of using a CDN, as you can just host your origin
servers there instead.
CDNs
are also not a good idea if the assets being served are dynamic and sensitive.
You don’t want to serve stale data for sensitive situations, such as when working with
financial/government services.