WP-Optimize
95Get caching and more with this powerful cache plugin. Cache, optimize images, clean your database and minify f...
This plugin caches WordPress classic menus to improve page loading time.
Menu Caching is a WordPress plugin designed to improve the performance of websites by caching menu HTML. It reduces the number of database calls made when users visit pages with menus, which can significantly enhance page loading times, especially on sites with multiple menus or large menu items.
The plugin allows you to enable or disable caching on a per-menu basis, automatically purges cached data when menus are edited, and refreshes cached data every 10 hours. It is compatible with various caching and translation plugins, making it suitable for a range of WordPress sites, particularly those with complex menu structures.
Best for: This plugin is suitable for WordPress sites with complex or multiple menus seeking to enhance performance.
What it does well
Where it falls short
Menu Caching can be a useful tool for improving site performance, especially for those with extensive menu structures. However, its effectiveness may vary depending on the overall site setup and use of other caching solutions.
Theo Gkitsos's own description of Menu Caching, lightly tidied.
We all know that database calls are the main performance bottleneck in WordPress. What most people don’t know though, is how “expensive” in terms of performance the WordPress menus are.
This plugin will cache the menu HTML and show the cached version to your visitors, saving your database from far too many unnecessary calls.
Menu data are scattered across six(!) different database tables. When a user visits a page, an odyssey throughout the database begins.
In ‘wp_terms’, ‘wp_term_taxonomy’ and ‘wp_options’ tables we’ll find menu ID, slug and theme location. Then ‘wp_posts’ and ‘wp_postmeta’ to find menu’s nav items and their metas.
In the metas, we will find its targeted object, so let’s pay ‘wp_terms’ or ‘wp_posts’ a visit again to find the menu item’s target and ‘wp_termmeta’ to find its metas.
These are a lot of tables and even more database calls! When all required data is collected, the menu HTML is created and it is shown to the user.
The same process is repeated for every menu on the page. Desktop menu, mobile menu, some menus on the footer, a menu for the customer account on the header’s right next to the cart icon…
Imagine all these menus, some of them with decades of menu items, loading in every page for every visitor on your site.
Menu changes are very rare and this makes them an easy target for caching. Caching the generated menu HTML will prevent all these unnecessary database calls and greatly improve page loading times.
Everytime a user visits a page with a menu, WordPress collects all menu data from the database, and then runs a walker to create the menu’s HTML. Right before this generated HTML is returned to the user, the HTML is saved in the database in a transient.
Next time a user requests this specific menu, the saved HTML will be returned, instead of creating the menu from scratch.
If you use a good caching plugin and a certain page is served from cache, then you not see a difference in loading times. BUT… there are many cases when a page is not served from cache and it that scenario you will notice a huge difference.
Some of the scenarios when a page is not served from cache:
Other plugins for making sites fast.
Get caching and more with this powerful cache plugin. Cache, optimize images, clean your database and minify f...
All-in-one unbeatable acceleration & PageSpeed improvement: caching, image/CSS/JS optimization...
Comprehensive image optimization with WebP, AVIF, Lazy Load, and more. Optimize images automatically for Faste...
Easy to use Under Construction Page & Coming Soon Page. Enable Under Construction Mode in seconds & sh...
Compress and optimize images, enable lazy load, serve WebP & AVIF, and speed up your site with a global im...
Speed up your website by using our WebP & AVIF Converter. Optimize images and serve WebP and AVIF images i...