How Long Does Cached Data Remain in a CDN Server
The duration for which cached data remains in a CDN server varies based on the cache-control policies set by the website owner, the type of data, and the configurations of the CDN.
This can range from a few seconds to several years. The industry standard is a 24 hour expiry, after which, new content is fetched.
{{cool-component}}
Cache-Control Policies
Max-Age Directive:
- The max-age directive in the HTTP header defines the maximum amount of time a resource is considered fresh. For example, max-age=3600 indicates that the data should be cached for one hour (3600 seconds).
- This is the most straightforward method to control caching duration.
s-maxage Directive:
- The s-maxage directive is similar to max-age but is specifically for shared caches like CDNs. It overrides the max-age directive if both are present.
- For example, s-maxage=86400 sets the cached data to expire in 24 hours (86400 seconds) for shared caches.
Expires Header:
- The Expires header sets a specific date and time for the resource to expire. This is an older method and is less flexible than max-age or s-maxage.
- Example: Expires: Wed, 21 Oct 2024 07:28:00 GMT.
Cache-Control: No-Cache, No-Store:
- no-cache indicates that the cached data must be revalidated with the origin server before serving it.
- no-store instructs the cache to never store the data.
Types of Data
Static Content:
- Images, stylesheets, JavaScript files typically have long caching durations because they don’t change frequently.
- Example: Images might be cached for a year (max-age=31536000).
- Check: How to Improve Cache Static Content
Dynamic Content:
- Content that changes frequently, like news articles or user-specific data, has much shorter caching durations.
- Example: Dynamic HTML might be cached for a few minutes or even just seconds (max-age=60).
Fine tuning these also improves cache hit ratio, but that’s more related to the quality rather than the longevity.
CDN Configurations
Default Settings:
- Many CDNs have default caching policies and cache keys. For instance, if no cache-control header is set, some CDNs might default to caching content for 24 hours.
Custom Rules:
- CDNs often allow custom rules based on URL patterns, file types, or other criteria. These rules can override default settings and HTTP headers.
{{cool-component}}
Browser Caching vs. CDN Caching
Browser Caching:
- Browsers cache data locally on the user’s device. The duration is governed by the same cache-control headers but is specific to individual users.
- Example: If a stylesheet has max-age=31536000, the browser will cache it for a year on the user's device.
Web Caching in CDNs:
- CDNs cache data across multiple servers to serve it faster to users worldwide. The cache-control headers guide this caching, but CDNs can also revalidate and purge cached content based on specific triggers or manual interventions.
Calculations
Let’s look at a scenario for better understanding:
Example Scenario:
- A website sets the following header for its images: Cache-Control: public, max-age=604800, s-maxage=2592000.
- max-age=604800 (1 week) means the browser will cache the images for one week.
- s-maxage=2592000 (1 month) means the CDN will cache the images for one month.
- Here, users will get the images from their browser cache for up to a week without re-fetching from the CDN. The CDN will serve the same image to different users from its cache for up to a month before re-fetching from the origin server.
Practical Considerations
Cache Invalidation:
- Sometimes, you need to purge cached content before its expiration. CDNs offer mechanisms for cache invalidation, either through their APIs or dashboards.
Stale-While-Revalidate and Stale-If-Error:
- These directives allow serving stale content while fetching new data or if the origin server is down, improving reliability.
Edge Cases:
- Some content, like personalized data, should not be cached (Cache-Control: private, no-store).