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.
Top keywords
- keys72×3.33%
- cache62×2.87%
- surrogate54×2.50%
- surrogate keys49×2.27%
- wp48×2.22%
- post37×1.71%
- pantheon35×1.62%
- query27×1.25%
- emits22×1.02%
- emits surrogate22×1.02%
- emits surrogate keys22×1.02%
- page21×0.97%
WP Fastest Cache – WordPress Cache Plugin
Official Website You can find more information on our website (wpfastestcache.com) Welcome to the page of the WP Fastest Cache plugin, a WordPress cache plugin developed to speed up WordPress sites. In today’s world where every second counts, optimizing your website’s performance is very important. Meet WP Fastest Cache, your caching plugin that you can use to speed up WordPress websites. Optimize the performance of your website with WP Fastest Cache. Improve Google PageSpeed, Core Web Vitals, GTmetrix and Pingdom score with our wp cache plugin. In addition, page speed is a ranking factor in Google’s search algorithm. Therefore, using cache plugins helps improve your SEO ranking. Our WordPress optimization plugin not only accelerates your site but also boosts SEO rankings. Features Mod_Rewrite which is the fastest method is used in this plugin All cache files are deleted when a post or page is published Admin can delete all cached files from the options page Admin can delete minified css and js files from the options page Block cache for specific page or post with Short Code Cache Timeout – All cached files are deleted at the determinated time Cache Timeout for specific pages Enable/Disable cache option for mobile devices Enable/Disable cache option for logged-in users SSL support CDN support – Effortlessly enhance website speed and performance with seamless CDN integration, supporting Bunny CDN, Cloudflare, and various other leading CDN providers. CDN integration modifies the URLs of static resources, enabling these assets to be served from your CDN service provider Cloudflare support – Cloudflare integration triggers the clearing of the cache on Cloudflare through API when a cache purge is initiated. As a result, WP Fastest Cache and Cloudflare operate seamlessly in tandem Preload Cache – Create the cache of all the site automatically Exclude pages and user-agents WP-CLI cache clearing Proxy Cache – Varnish Cache Integration to clear proxy cached content automatically when the cache created by WP Fastest Cache is cleared Performance Optimization WP Fastest Cache is not only a wp cache plugin but also a speed optimization wordpress cache plugin. There are many features such as Minify Html, Minify Css, Enable Gzip Compression, Leverage Browser Caching, Add Expires Headers, Combine CSS, Combine JS, Disable Emoji. Page Caching – Page caching feature generates and store static HTML files from your dynamic WordPress blog to reduce initial server response time, and improving page load time. Page cache and caching play a critical role in improving website speed and overall web performance. By storing frequently accessed data, effective caching reduces server workload and significantly improves cache performance, allowing pages to be delivered faster to users. This optimization directly lowers load time and enhances page speed, resulting in a smoother user experience and better SEO. Minify Html – Using an HTML minifier is an effective way to reduce HTML size and optimize HTML by removing unnecessary spaces, comments, and line breaks. A smaller HTML file helps reduce page size, which directly improves page speed and leads to a faster website experience for users. By focusing on web performance optimization, optimized HTML allows browsers to load and render pages more efficiently, helping to improve website speed, lower bandwidth usage, and deliver better overall performance across all devices Minify Css – CSS minify techniques play a crucial role in modern web development by reducing unnecessary characters through a reliable css minifier. With effective css compression, developers can compress CSS files and apply proper css minification to optimize CSS for production environments. This approach helps reduce CSS file size, which directly contributes to improve website speed and overall css performance optimization. As part of a broader page speed optimization strategy, these practices significantly enhance website performance optimization and lead to better website loading performance, especially on mobile and low-bandwidth connections Enable Gzip Compression – Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser Leverage browser caching – Browser cache plays a critical role in how efficiently a web browser cache stores static resources like images, stylesheets, and scripts, directly impacting page load speed. By allowing returning visitors to load files from their local browser cache instead of downloading them again, websites can significantly reduce server requests and improve website speed. Properly configured browser caching not only creates a faster and smoother user experience but also helps lower bandwidth usage and enhance overall site performance Combine CSS – Reduce number of HTTP round-trips by combining multiple CSS resources into one Combine JS – Combining JavaScript files is a core technique in javascript optimization and js optimization, especially when the goal is to reduce requests and improve page load speed. By combine js assets or combine javascript files into a single bundle, developers can streamline how scripts are delivered to the browser. Whether you call it js combine or javascript combine, the idea is the same: fewer HTTP requests mean faster performance. Similarly, approaches that merge js or merge javascript—also known as js merge or javascript merge—help eliminate overhead caused by loading multiple separate files. When done correctly, combining and merging scripts leads to cleaner delivery, better caching, and noticeably faster websites Disable Emoji – You can remove the emoji inline css and wp-emoji-release.min.js Premium Performance Optimization The free version is enough to speed up your site but in the premium version there are extra features such as Mobile Cache, Widget Cache, Minify HTML Plus, Minify CSS Plus, Minify JS, Combine JS Plus, Defer Javascript, Optimize Images, Convert WebP, Database Cleanup, Google Fonts Async, Lazy Load and Delay JS for super fast load times. Mobile Cache Widget Cache Minify HTML Plus Minify CSS Plus Minify Javascript – Minify JS is a core step in web performance optimization because js minify techniques remove unnecessary characters, comments, and whitespace, making files smaller and faster to load. Through proper javascript minification, developers can compress JavaScript assets and significantly reduce transfer size, which directly supports effective js optimization and overall javascript optimization strategies. When combined with caching and code splitting, minified scripts help improve website speed, lower bandwidth usage, and enhance user experience. As a result, page speed optimization becomes easier to achieve, leading to faster render times and better search engine rankings. Combine JS Plus Defer Javascript – Eliminate render-blocking JavaScript resources. Consider delivering critical JS inline and deferring all non-critical JS Optimize Images – Optimized images load faster and consume less cellular data. Looking for an easy image compressor? Our tool lets you compress images instantly, including Compress JPEG and Compress PNG options. Enjoy fast image compression to reduce image size without losing quality. Perfect for quick image optimization with a smart image optimizer designed for all your needs. Convert WebP – Serve images in next-gen formats. Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. A fast and reliable WebP converter helps you convert to WebP in seconds. Whether you need a WebP convert tool, a JPG to WEBP Converter, PNG to WEBP Converter, or a simple image to WebP option, you can easily optimize your images. Quickly handle JPG to WEBP, PNG to WEBP, jpg convert to webp, and png convert to webp tasks to reduce file size and improve web performance. Database Cleanup – To keep your system running smoothly, it’s important to clean database structures regularly and ensure you clean DB records that are no longer needed. A database cleaner is essential for effective database cleaning and long-term database optimization. By removing unused entries and organizing data efficiently, you can significantly improve database performance and speed up database operations. Modern db cleaner tools automate the entire db cleaning process, helping developers maintain fast, reliable, and scalable systems. The Database Cleanup feature clears out all of the garbage datas such as post revisions, trashed posts & pages, comments from trash & spam, trackbacks and pingbacks, transient options, orphaned post meta, comment meta, user meta, term meta, and term relationship etc. Google Fonts Async Lazy Load – Lazy loading technique improve page speed and overall website loading time by loading content only when it is needed. Using lazy load images, lazy loading images, lazy load videos, and lazy load iframe helps reduce initial load size, enhances web performance, and delivers a smoother user experience. When implemented correctly, these methods make it easier to optimize website performance, lower bandwidth usage, and ensure faster, more efficient page delivery for both users and search engines. Delay JS – The Delay JavaScript feature helps reduce the ‘Reduce unused JavaScript’ warning in the Google PageSpeed Insights tool Information It is very inconvenient to use multiple caching plugins at the same time. That’s why you need to disable plugins such as LiteSpeed Cache, WP-Optimize, W3 Total Cache, WP Super Cache, SiteGround Optimizer, Breeze while using WP Fastest Cache. WP Fastest Cache is compatible with most popular plugins such as Contact Form 7, Yoast SEO, Elementor Website Builder, Classic Editor, Akismet Spam Protection, WooCommerce, Contact Form by WPForms, Really Simple SSL, All-in-One WP Migration, Yoast Duplicate Post, Wordfence Security – Firewall & Malware Scan, WordPress Importer, UpdraftPlus WordPress Backup Plugin, MonsterInsights, All in One SEO, WP Mail SMTP by WPForms. Supported Languages Although there are over 7000 languages spoken in the world today, we feel very lucky to support 30 languages for now. However, localizing or adapting a plugin to another language or culture is time consuming and a demanding task. That’s where the amazing Translation Contributors team of WordPress comes into play. These selfless people spent their precious time without expecting anything in return so that other people can use the add-ons more easily. We sincerely thank all of them. Chinese Simplified (China), Chinese Traditional (Taiwan), Czech, Dutch (Belgium), Dutch (Netherlands), English (South Africa), English (UK), Finnish, French (France), Galician, German (Germany), Hungarian, Indonesian, Italian, Japanese, Korean (Korea), Persian, Russian, Slovak (Slovakia), Slovenian, Spanish (Argentina), Spanish (Chile), Spanish (Colombia), Spanish (Ecuador), Spanish (Mexico), Spanish (Spain), Spanish (Venezuela), Swedish, Turkish, Ukrainian