Hummingbird Performance – Cache & Page Speed Optimization for Core Web Vitals | Critical CSS | Minify CSS | Defer CSS Javascript | CDN
Hummingbird makes your website faster and optimizes site performance by adding new ways to boost Google PageSpeed Insights with fine-tuned controls over file compression, deferring CSS and JavaScript styles and scripts, minify for CSS and JS, Lazy Load integration, and world-class caching. Hummingbird is brought to you by the WordPress speed specialists that created Smush image optimization, now active on more than +1 million websites. Get the complete speed boost with Hummingbird and Smush. Enjoy top-tier performance and PageSpeed optimization from the start with Hummingbird Pro. Level up immediately with exclusive Pro features like Delay JavaScript Execution, Critical CSS Generation, Brotli file compression, and 119-point global asset CDN with unlimited bandwidth. Learn more about Pro. If PageSpeed Insights is making these speed recommendations Hummingbird can help: Enable text compression – Use gzip to make your site fly (Brotli Compression via CDN included with Pro). Preconnect to required origins – Use Hummingbird to establish earlier connections. Preload key requests – Prioritize resources based on order. Avoid enormous network payloads – Consider Lazy Load for comments or breaking up smaller posts. Use efficient cache – The Hummingbird Cache suite offers effective browser cache for caching any site. Fix your JavaScript execution time – Deliver smaller JS payloads, preload JS, and defer JS. Minify CSS – Strip unused code from your CSS. Minify JavaScript – Speed up the time it takes to parse your JS files. Eliminate render-blocking resources – Move critical CSS and JS inline and defer all non-critical JS/CSS. Delay JavaScript execution (Pro only) – Increase performance by delaying the loading of non-critical JS files and scripts until user interaction. Automatically generate Critical CSS (Pro only) – Substantially boost page speed and UX by prioritizing above-the-fold content. Defer unused CSS – Defer the loading of CSS not used for above-the-fold content. Lazy Load offscreen images (Smush free integration). Hummingbird scans your site and provides one-click fixes to speed up WordPress in a flash. You’ll get faster loading pages, higher search rankings (SERP) and PageSpeed scores, and happier visitors with Hummingbird’s WordPress speed optimization. Optimizing the speed of your site has never been easier! Features Available in Hummingbird Include: Scan and Fix – Get a scan of your site, find out what’s slowing it down, and use one-click performance improvements to make critical speed improvements. World-class caching – A full caching suite to load pages faster with full-page, Gravatar, and browser cache tool. Performance Reports – Pro tips for running your site at super speed. Asset Optimization – Combine, compress and position Javascript, CSS, and Google Font files for top performance. Safe Mode — Test Hummingbird settings without affecting your visitors’ experience, only logged-in admins see the optimized version. Better Rankings – Improve scores on Google PageSpeed Insights (SEO ranking factor), YSlow, Pingdom, and GTmetrix. Increase Your Conversion Rate – Don’t keep visitors waiting: faster sites convert better. GZIP Compression – Blazing-fast HTML, JavaScript, and stylesheet (CSS) transfer. Configs – Set your preferred performance settings, save them as config, and instantly upload to any other site. Font Optimization – Improve site speed, Core Web Vitals, and visual stability by preloading critical fonts and enabling fallbacks. Uptime Monitoring & Alerts – Get instant notifications if your site ever goes down. Scheduled Performance Reports – Stay on top of site speed with regular insights. Learn The Ropes With These Hands-On Hummingbird Tutorials How To Optimize WordPress For Speed With Hummingbird How To Optimize Elementor for Free Using Smush and Hummingbird How To Optimize WPBakery Sites Using Smush And Hummingbird Speed Up and Optimize Avada for Free Using Smush and Hummingbird Optimize Divi for Free Using Smush and Hummingbird Hummingbird Features to Speed Up WordPress Scan and One-Click Fix Hummingbird is a WordPress speed optimization plugin. It will scan your site, find files that are slowing it down, and provide tips and fixes for making your site run at top speed. Hummingbird even has one-click improvements like a full cache suite, one-click minify for styles and scripts, and deferring CSS and JS for quickly optimizing performance. What could be easier! World-Class Caching You’ll get a world-class caching suite, including full-page, browser, and Gravatar cache. Make your site load even faster with Hummingbird’s complete set of cache tools that give your visitors a faster browsing experience. Including full-page, browser and Gravatar caching. Asset Optimization Did you know that loading too many files in your site’s header can slow it down? Hummingbird now gives you granular control with separate Combine and Compress optimization modes, so you can fine tune your Asset Optimization like a pro. Reorder, defer, compress and exclude CSS and JavaScript files with one-click. Transfer Data at Top Speed With GZIP Hummingbird has GZIP powers to make sharing your site more efficient. Sending zipped files is faster and can save you money on hosting. And don’t worry about setup, send Hummingbird instructions with the click of a button and she’ll handle the rest. Built-in Cloudflare Integration Hummingbird can be used to control your Cloudflare browser cache and Automatic Platform Optimizations (APO) settings as well! Simply add your Cloudflare API key and configure away. Font Optimization Boost site speed, Core Web Vitals, and the visual stability of pages for users with Hummingbird’s one-click font optimization features: Preload Fonts, which instructs browsers to preload essential fonts, and Swap Web Fonts, which applies a temporary fallback font until the primary one loads. Fully Compatible With Smush Image Optimization You can complement Hummingbird’s WordPress speed optimization features with our award-winning sister-plugin Smush image optimization. Smush compresses your images, giving your site less to load – and thus a faster load time. Hummingbird + Smush integrate perfectly together, and are the perfect match to speed up WordPress. Compress, optimize (optimise), and fix PageSpeed performance with properly sized images, lazy load, next-gen WebP convert, image formatting, and more. Save time with Hummingbird Configs Configs allow you to save your preferred Hummingbird configuration settings and apply them to your other sites in a few clicks. You can create unlimited configs. Delay Javascript Resources (Pro Only) Boost site performance dramatically by delaying the loading of JS files and third-party scripts until direct user interaction (e.g. scroll or click). Enjoy faster loading pages, improve web vitals, and ace your PageSpeed scores. Activate in one click, includes user interaction timeout and the option to exclude critical files from being delayed. A paid WPMU DEV account (the developers of Hummingbird) is required to access this feature. You can check out our affordable plans here. Generate Critical CSS (Pro Only) Maximize site speed and user experience by prioritizing only the CSS that matters most. The Generate Critical CSS feature intelligently generates and embeds critical CSS in the head of each page, giving priority to above-the-fold content and significantly improving loading speed. Updates to your critical CSS are automated with every site design change, and you can enable/disable with a click. Faster Websites Rank Higher, Convert Better Every millisecond counts: your visitors expect an ever-faster website, with a page load time of under two seconds expected – and the norm. If visitors don’t get that on your site, they will leave. If you’re running a business website or eCommerce store, that means if your website does not load quickly, you will lose sales. Hummingbird is here to help you; it’s a one of a kind WordPress performance optimization plugin that can make your site run at superspeed, for free! You get our WordPress performance optimization suite, which includes minification and GZIP for small page sizes, full caching for faster loading, and integration with Cloudflare’s APO / browser cache, and our sister-plugin Smush image optimization. Hummingbird is built with ease-of-use in mind; it makes your WordPress site faster, but it’s also fast to set up. You can scan your site and implement recommended changes in one-click, getting a fast site in mere minutes. All the above is free and will speed up WordPress for you. If you need the very fastest WordPress site, you should get a WPMU DEV Membership. Our Membership gives you access to Hummingbird Pro – which features automated scanning, enhanced minify compression (with 2x the regular optimization), CDN hosted minification – alongside Smush Pro image optimization, all our premium WordPress plugins, and 24/7 WordPress support. It’s an incredible deal, and you can find out more here. What do People say About Hummingbird? ★★★★★ “Hummingbird is so easy to use. I thought it wouldn’t change my speed much because I already made improvements. I ran the scan, it gave me recommendations, I pushed a button to apply them and it made my site even faster!” – Camilo ★★★★★ “Hummingbird is getting smarter with each update. Today it’s become so good that it forced me to remove giant cache and optimization plugins like WP Super Cache and WP Sweep because now Hummingbird includes all those features – but in a more impressive way.” – swagatam1975 ★★★★★ “Hummingbird took me from 32 to 84 on Google page speed plus made my site 50% faster on GTmetrix!” – Nicolas ★★★★★ “I just built a real bloated sack of crap of a WP site, and after configuring Hummingbird and letting it do its thing, the site is actually fast — much faster than it has any right to be…I’m impressed.” – Cacarr A Note From Hummingbird Hey! This is Hummingbird, your trusted solution to speed up WordPress. I’m part of the WPMU DEV team, a superhero-suite of WordPress plugins, services, and support. Here are some of our other free plugins: Smush – Image Compression and Optimization Forminator – Form, Quiz, Poll and Survey Builder Hustle – Pop-ups, Slide-ins and Email Opt-ins And if you need ALL our Pro plugins AND 24/7 WordPress support, get WPMU DEV membership! My superhero friends run the WPMU DEV Blog, your source for the very best WordPress tutorials. If you need to be in the know about WordPress, check it out. Thanks for looking at Hummingbird, and I look forward to flying through your site to make it faster than ever. Enjoy, The Hummingbird About Us WPMU DEV is a premium supplier of quality WordPress plugins, services and support. Join us here: https://wpmudev.com/ Don’t forget to stay up to date on everything WordPress from the Internet’s number one resource: WPMU DEV Blog Hey, one more thing… we hope you enjoy our free offerings as much as we’ve loved making them for you!
Top keywords
- hummingbird44×2.57%
- site32×1.87%
- speed27×1.57%
- wordpress22×1.28%
- optimization21×1.22%
- css19×1.11%
- faster16×0.93%
- smush14×0.82%
- performance13×0.76%
- pro13×0.76%
- cache11×0.64%
- critical10×0.58%
Pantheon Advanced Page Cache
For sites wanting fine-grained control over how their responses are represented in their edge cache, Pantheon Advanced Page Cache is the golden ticket. Here’s a high-level overview of how the plugin works: When a response is generated, the plugin uses surrogate keys based on WordPress’ main WP_Query object to “tag” the response with identifers for the data used in the response. See the “Adding Custom Keys” section for including your own surrogate keys. When WordPress data is modified, the plugin triggers a purge request for the data’s corresponding surrogate keys. Because of its surrogate key technology, Pantheon Advanced Page Cache empowers WordPress sites with a significantly more accurate cache purge mechanism, and generally higher cache hit rate. It even works with the WordPress REST API. Go forth and make awesome! And, once you’ve built something great, send us feature requests (or bug reports). How It Works Pantheon Advanced Page Cache makes heavy use of surrogate keys, which enable responses to be “tagged” with identifiers that can then later be used in purge requests. For instance, a home page response might include the Surrogate-Key header with these keys: Surrogate-Key: front home post-43 user-4 post-41 post-9 post-7 post-1 user-1 Similarly, a GET requests to /wp-json/wp/v2/posts might include the Surrogate-Key header with these keys: Surrogate-Key: rest-post-collection rest-post-43 rest-post-43 rest-post-9 rest-post-7 rest-post-1 Because cached responses include metadata describing the data therein, surrogate keys enable more flexible purging behavior like: When a post is updated, clear the cache for the post’s URL, the homepage, any index view the post appears on, and any REST API endpoints the post is present in. When an author changes their name, clear the cache for the author’s archive and any post they’ve authored. There is a limit to the number of surrogate keys in a response, so we’ve optimized them based on a user’s expectation of a normal WordPress site. See the “Emitted Keys” section for full details on which keys are included, and the “Adding Custom Keys” section following for information on how to add your own. Adding Custom Keys By default, Pantheon Advanced Page Cache generates surrogate keys based on an interpretation of the main WP_Query query object. Because WordPress sends headers before the page is rendered, you need to use the pantheon_wp_main_query_surrogate_keys filter to include additional surrogate keys for any data present on the page. For example, to include surrogate keys for a sidebar rendered on the homepage, you can filter the keys using the is_home() template tag: /** * Add surrogate key for the featured content sidebar rendered on the homepage. */ add_filter( 'pantheon_wp_main_query_surrogate_keys', function( $keys ){ if ( is_home() ) { $keys[] = 'sidebar-home-featured'; } return $keys; }); Then, when sidebars are updated, you can use the pantheon_wp_clear_edge_keys() helper function to emit a purge event specific to the surrogate key: /** * Trigger a purge event for the featured content sidebar when widgets are updated. */ add_action( 'update_option_sidebars_widgets', function() { pantheon_wp_clear_edge_keys( array( 'sidebar-home-featured' ) ); }); Similarly, to include surrogate keys for posts queried on the homepage, you can pre-fetch the posts before the page is rendered: /** * An example of pre-fetching a WP_Query to tag the * response with queried data. You'd use `papcx_wp_query()` * a second time within your template to use the data. */ add_filter( 'pantheon_wp_main_query_surrogate_keys', function( $keys ) { if ( is_home() ) { $query = papcx_wp_query( array( 'post_type' => 'page', ) ); foreach( $query->posts as $post ) { $keys[] = 'post-' . $post->ID; } } return $keys; }); /** * Register a 'papc-non-persistent' cache group to cache data * in a non-persistent manner. We only want data in this group * to be cached within the page request. */ add_action( 'init', function(){ wp_cache_add_non_persistent_groups( array( 'papc-non-persistent' ) ); }); /** * Helper function to instantiate a WP_Query object only * once per page request. * * @param array $args Arguments to pass to WP_Query. * @return WP_Query */ function papcx_wp_query( $args = array() ) { $cache_key = md5( serialize( $args ) ); // WP_Query object will be in cache the second time we use the function. $cache_value = wp_cache_get( $cache_key, 'papc-non-persistent' ); if ( false !== $cache_value ) { return $cache_value; } $query = new WP_Query( $args ); wp_cache_set( $cache_key, $query, 'papc-non-persistent' ); return $query; } Because Pantheon Advanced Page Cache already handles WordPress post purge events, there’s no additional call to pantheon_wp_clear_edge_keys(). Lastly, the pantheon_wp_rest_api_surrogate_keys filter lets you filter surrogate keys present in a REST API response. Additional purging by path When a post is published for the first time, the permalink’s path is also purged even if it has no matching keys. This can be further filtered with the pantheon_clear_post_path filter. add_action('pantheon_clear_post_path', function($paths) { // Add or remove paths from $paths return $paths }, 10, 3); Need a bit more power? In addition to pantheon_wp_clear_edge_keys(), there are two additional helper functions you can use: pantheon_wp_clear_edge_paths( $paths = array() ) – Purge cache for one or more paths. pantheon_wp_clear_edge_all() – Warning! With great power comes great responsibility. Purge the entire cache, but do so wisely. Ignoring Specific Post Types By default, Pantheon Advanced Page Cache is pretty aggressive in how it clears its surrogate keys. Specifically, any time wp_insert_post is called (which can include any time a post of any type is added or updated, even private post types), it will purge a variety of keys including home, front, 404 and feed. To bypass or override this behavior, since 1.5.0 we have a filter allowing an array of post types to ignore to be passed before those caches are purged. By default, the revision post type is ignored, but others can be added: /** * Add a custom post type to the ignored post types. * * @param array $ignored_post_types The array of ignored post types. * @return array */ function filter_ignored_posts( $ignored_post_types ) { $ignored_post_types[] = 'my-post-type'; // Ignore my-post-type from cache purges. return $ignored_post_types; } add_filter( 'pantheon_purge_post_type_ignored', 'filter_ignored_posts' ); This will prevent the cache from being purged if the given post type is updated. Setting the Cache Max Age with a filter The cache max age setting is controlled by the Pantheon Page Cache admin page. As of 2.0.0, there are three cache age options by default — 1 week, 1 month, 1 year. Pantheon Advanced Page Cache automatically purges the cache of updated and related posts and pages, but you might want to override the cache max age value and set it programmatically. In this case, you can use the pantheon_cache_default_max_age filter added in Pantheon MU plugin 1.4.0+. For example: add_filter( 'pantheon_cache_default_max_age', function() { return 10 * DAY_IN_SECONDS; } ); When the cache max age is filtered in this way, the admin option is disabled and a notice is displayed. Updating the cache max age based on nonces Nonces created on the front-end, often used to secure forms and other data, have a lifetime, and if the cache max age is longer than the nonce lifetime, the nonce may expire before the cache does. To avoid this, you can use the pantheon_cache_nonce_lifetime action to set the pantheon_cache_default_max_age to less than the nonce lifetime. For example: do_action( 'pantheon_cache_nonce_lifetime' ); It’s important to wrap your do_action in the appropriate conditionals to ensure that the action is only called when necessary and not filtering the cache max age in cases when it’s not necessary. This might mean only running on certain pages or in certain contexts in your code. WP-CLI Commands This plugin implements a variety of WP-CLI commands. All commands are grouped into the wp pantheon cache namespace. $ wp help pantheon cache NAME wp pantheon cache DESCRIPTION Manage the Pantheon Advanced Page Cache. SYNOPSIS wp pantheon cache SUBCOMMANDS purge-all Purge the entire page cache. purge-key Purge one or more surrogate keys from cache. purge-path Purge one or more paths from cache. Use wp help pantheon cache to learn more about each command. Debugging By default, Pantheon’s infrastructure strips out the Surrogate-Key response header before responses are served to clients. The contents of this header can be viewed as Surrogate-Key-Raw by adding on a debugging header to the request. A direct way of inspecting headers is with curl -I. This command will make a request and show just the response headers. Adding -H "Pantheon-Debug:1" will result in Surrogate-Key-Raw being included in the response headers. The complete command looks like this: curl -IH "Pantheon-Debug:1" https://scalewp.io/ Piping to grep will filter the output down to just the Surrogate-Key-Raw header: curl -IH "Pantheon-Debug:1" https://scalewp.io/ | grep -i Surrogate-Key-Raw Tada! Emitted Keys and Purge Events Emitted Keys on Traditional Views Home / Emits surrogate keys: home, front, post- (all posts in main query) Single post /2016/10/14/surrogate-keys/ Emits surrogate keys: single, post- , post-user- , post-term- (all terms assigned to post) Author archive /author/pantheon/ Emits surrogate keys: archive, user- , post- (all posts in main query) Term archive /tag/cdn/ Emits surrogate keys: archive, term- , post- (all posts in main query) Day archive /2016/10/14/ Emits surrogate keys: archive, date, post- (all posts in main query) Month archive /2016/10/ Emits surrogate keys: archive, date, post- (all posts in main query) Year archive /2016/ Emits surrogate keys: archive, date, post- (all posts in main query) Search /?s= Emits surrogate keys: search, either search-results or search-no-results, post- (all posts in main query) Not found (404) Emits surrogate keys: 404 Emitted Keys on REST API Endpoints Posts /wp-json/wp/v2/posts emits surrogate keys: rest-post-collection, rest-post- /wp-json/wp/v2/posts/ emits surrogate keys: rest-post- Pages /wp-json/wp/v2/pages emits surrogate keys: rest-page-collection, rest-post- /wp-json/wp/v2/pages/ emits surrogate keys: rest-post- Categories /wp-json/wp/v2/categories emits surrogate keys: rest-category-collection, rest-term- /wp-json/wp/v2/categories/ emits surrogate keys: rest-term- Tags /wp-json/wp/v2/tags emits surrogate keys: rest-post_tag-collection, rest-term- /wp-json/wp/v2/tags/ emits surrogate keys: rest-term- Comments /wp-json/wp/v2/comments emits surrogate keys: rest-comment-collection, rest-comment-post- , rest-comment- /wp-json/wp/v2/comments/ emits surrogate keys: rest-comment-post- , rest-comment- Users /wp-json/wp/v2/users emits surrogate keys: rest-user-collection, rest-user- /wp-json/wp/v2/users/ emits surrogate keys: rest-user- Settings /wp-json/wp/v2/settings emits surrogate keys: rest-setting- Purge Events Different WordPress actions cause different surrogate keys to be purged, documented here. wp_insert_post / transition_post_status / before_delete_post / delete_attachment Purges surrogate keys: home, front, 404, post- , user- , term- , rest- -collection, rest-comment-post- Affected views: homepage, single post, any page with 404 header, any archive where post displays, author archive, term archive, REST API collection and resource endpoints clean_post_cache Purges surrogate keys: post- , rest-post- Affected views: single post, REST API resource endpoint created_term / edited_term / delete_term Purges surrogate keys: term- , post-term- , rest- -collection Affected views: term archive, any post where the term is assigned, REST API collection and resource endpoints clean_term_cache Purges surrogate keys: term- , rest-term- Affected views: term archive, REST API resource endpoint wp_insert_comment / transition_comment_status Purges surrogate keys: rest-comment-collection, rest-comment- Affected views: REST API collection and resource endpoints clean_comment_cache Purges surrogate keys: rest-comment- Affected views: REST API resource endpoint clean_user_cache Purges surrogate keys: user- , rest-user- Affected views: author archive, any post where the user is the author updated_option Purges surrogate keys: rest-setting- Affected views: REST API resource endpoint Surrogate Keys for taxonomy terms Setting surrogate keys for posts with large numbers of taxonomies (such as WooCommerce products with a large number of global attributes) can suffer from slower queries. Surrogate keys can be skipped for ‘product’ post types’ taxonomy terms (or any other criteria you see fit) with the following filter: function custom_should_add_terms($should_add_terms, $wp_query) { if ( $wp_query->is_singular( 'product' ) ) { return false; } return $should_add_terms; } add_filter('pantheon_should_add_terms', 'custom_should_add_terms', 10, 2); Other Filters pantheon_apc_disable_admin_notices Since 2.0.0, Pantheon Advanced Page Cache displays a number of admin notices about your current cache max age value. You can disable these notices with the pantheon_apc_disable_admin_notices filter. add_filter( 'pantheon_apc_disable_admin_notices', '__return_true' ); Alternately, the function callback is passed into the pantheon_apc_disable_admin_notices filter, allowing you to specify precisely which notice to disable, for example: add_filter( 'pantheon_apc_disable_admin_notices', function( $disable_notices, $callback ) { if ( $callback === '\\Pantheon_Advanced_Page_Cache\\Admin_Interface\\admin_notice_maybe_recommend_higher_max_age' ) { return true; } return $disable_notices; }, 10, 2 ); The above example would disable only the admin notice recommending a higher cache max age. Plugin Integrations Pantheon Advanced Page Cache integrates with WordPress plugins, including: WPGraphQL Contributing See CONTRIBUTING.md for information on contributing.