Configuration for large websites

If you have a big website with thousands of pages, delivering a cached and optimized site presents some challenges. In this doc, we will cover some useful techniques you can apply when caching a large sitemap. 

Heads up! This guide includes advanced configuration of some of our features. In most cases, the default behavior of this feature is adequate, and customizations are not required. The following applies only to very large sitemaps.

When you have a large sitemap, is important to plan a good caching strategy. There are physical limitations resulting from the generation of the cache and optimizations, the delivery of the pages/assets to the users, and the cache cleanup. 

When using WP Rocket on a big scale website, we recommend taking the following caching recommendations into account:

1. Preload

a. Only preload the most visited pages, not the full sitemap:

Problem: If you have a website with 50.000 URLs, there is a good chance that most of the traffic is concentrated on a percentage of them. On large sitemaps, the preload might not reach a good % of completion because there are good chances that the cache will be cleared while it is being processed

Solution: Focus the preload on the most visited pages. A smaller preload best way to ensure a more reliable process. You can achieve this by selecting only a specific sitemap to preload, instead of the full sitemap Customizing preload sitemaps

Visited URLs will still be preloaded!
This is not going to limit the cache preload to that initial sitemap. Any other URLs visited by users will be  immediately added to the preload table and preloaded when further preload processes run.

So, the site's organic traffic will "teach" our tool which pages are important and visited, and we will keep them preloaded for future visits.

b. Server infrastructure and preload speed:

Problem: depending on the number of pages to be preloaded, the process will be challenging to the server infrastructure.

Solution:  Talk with your hosting provider, to ensure your server has enough resources for the process to happen. 
Additonally, WP Rocket can help by allowing control over the preload generation pace. To learn how you can tweak the preload parameters, please check this doc: Customize Preload Parameters

c. Long-term cache, disabling Automatic Cache Clearing:

Problem: The cache might get cleared before its generation is finished. 

Solution: To avoid frequent cache clearing, and keep the cache for a long term, you can use this technique: Disable automatic cache clearing

However, this only applies to non-dynamic websites, or those sites using features that would not require the cache to be purged frequently (e-commerce sites using nonces, for example). You will need to check if this applies to your case before implementing this approach.

2. Remove Unused CSS

Problem: The Used CSS generation process requires our external service to visit every uncached page. On a large sitemap, our external tool will try visiting all the pages added to the preload table. This puts stress on the server and it might be a failure point on huge sitemaps. 

Solution: This is where reducing the sitemap will help and you can expect the process to work better. To learn how you can tweak the Remove Unused CSS parameters, please check this doc: Customize Remove Unused CSS Parameters

3. Mobile-specific cache

Problem: The Mobile Cache option creates an additional set of cache files, and if Remove Unused CSS is active, an additional set of Used CSS files will be created too.

Solution: Disable the mobile-specific cache to deliver the default (desktop) cache to mobile visitors. This will reduce the number of cache files to half.

In WP Rocket versions older than 3.16, you can disable the  Separate cache files for mobile devices option.

Note: This approach is only recommended if your theme is fully responsive, and you don't have any mobile-specific content on your site.

4. Optimize the delivery of the cache

Edge cache

Problem: If you have a large amount of traffic, even if the page is cached, and the cache is delivered without requiring PHP, the server's ability to handle single-page requests will surely be the bottleneck.

Solution: This goes beyond WP Rocket's features, but tools such as Cloudflare Cache Everything, Cloudflare APO, Sucuri, or a reverse proxy (Varnish, NGINX) might help.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.