# W3 Total Cache — Changelog `meteorgpl-plugin/w3-total-cache` · 101 releases, newest first, as published by the vendor. ## 2.10.7 - Feature: Minify: Cache selected external scripts locally for auto minify - Feature: Page Cache: Add a one-pass mode for sitemap cache preload - Enhancement: Developers: Add a generated reference of supported actions and filters - Fix: Browser Cache: Constrain unquoted URL rewriting when removing query strings from static resources - Fix: Page Cache: Remove the expired role-cookie compatibility path and skip caching for rejected roles - Fix: Page Cache: Avoid Options API calls before WordPress has loaded them during early bootstrap - Fix: Object Cache: Persist cache invalidation from wp-admin when admin object caching is disabled - Fix: CDN: Preserve custom attachment directories when pushing media - Fix: Google PageSpeed: Renew expired access tokens without discarding authorization - Fix: Licensing: Show the activation-limit notice for licenses that have reached their limit - Fix: Settings: Persist Purge via WP-Cron schedule settings - Fix: Settings: Skip unchanged w3tc_state option writes - Update: Remove leftover newsletter signup code - Update: Build: Omit development-only files from the release ZIP ## 2.10.6 - Fix: Database Cluster: Restore placeholder unescape so admin searches with wildcards match - Enhancement: Page Cache: Add w3tc_pgcache_rules_required filter to skip writing rewrite rules - Fix: Settings: Restrict POST updates to keys owned by the active admin page - Fix: Licensing: Limit plugin type updates to the license path - Fix: Image Converter: Require administrator capability for convert and submit - Fix: Config import: Validate structure before applying - Fix: Role cookies: Stop honoring legacy names unless explicitly enabled - Fix: Minify: Validate precache URLs before outbound fetch - Fix: URL constants: Apply host allowlists to overrides - Fix: Minify: Validate Java minifier JAR paths before invocation - Update: Bunny CDN and Redis: Enable verified TLS by default - Fix: Diagnostics: Extend log redaction across remaining formats - Fix: Reverse proxy: Apply forwarded client IP and scheme headers only from trusted proxies - Fix: CDN: Limit Media Library import to static assets - Fix: CDN: Render admin server responses as text - Fix: CDN: Use saved settings for Test - Fix: CDN: Scope CORS headers to font resources - Fix: Browser Cache: Normalize rewrite rule rendering - Fix: Support: Reduce client data sent from the Support page - Fix: Forums: Normalize API client responses - Fix: Lazy Load: Match background styles as top-level attributes only - Fix: Admin: Align request validation across notice, extension, setup, CDN, and minify flows ## 2.10.5 - Fix: Page Cache: Keep Disk Enhanced cache file operations within the cache directory ## 2.10.4 - Fix: Lazy Load: Match only quoted image attributes when rewriting src/srcset/sizes - Fix: Cache purge: Restore filterable capabilities for purge-all and purge-post ## 2.10.3 - Fix: Output buffering: Skip REST API requests unless page cache REST caching is enabled - Fix: Minify: Keep cache file operations within the cache directory - Fix: Defer Scripts: Restore timeout configuration placeholder replacement ## 2.10.2 - Fix: Disk cache: Restore file-locking writes on PHP 8+ - Fix: Apache: Limit Options -MultiViews in page cache rules to compatibility mode - Fix: Page Cache: Skip storing redirect responses ## 2.10.1 - Fix: General Settings: "The link you followed has expired" when emptying all caches - Fix: Redis/Memcached/CDN: Restore connection handling after 2.10.0 at-rest credential encryption - Fix: At-rest credentials: Defer encryption until WordPress salts are available - Fix: Always Cached: Queue regeneration on nginx with Disk: Enhanced page cache - Fix: mfunc: Render unrecognized dynamic-fragment tags as empty output - Fix: Apache: Remove Options -MultiViews from root .htaccess (HTTP 500 on restrictive AllowOverride) - Fix: Multisite: Admin page links in network admin ## 2.10.0 - Security: Hardened authorization, capability, and request-verification (nonce/CSRF) checks across admin and AJAX endpoints - Security: Improved input validation and output escaping to prevent cross-site scripting (XSS) - Security: Strengthened protections against code, command, and file-inclusion injection - Security: Hardened processing of dynamic and cached content, including data serialization - Security: Restricted outbound server-side requests to mitigate server-side request forgery (SSRF) - Security: Restricted configuration changes to prevent unauthorized modification - Security: Improved handling of stored credentials, cookies, and generated server-configuration files - Security: Reduced potential information disclosure and improved security logging ## 2.9.4 - Fix: Output buffering: Reverted to previous output buffering from 2.9.1 - Fix: Cloudflare: Token/Key validation - Fix: Prevent mfunc processing bypss by user-agent ## 2.9.3 - Fix: Output buffering: Discard nested OB contents for non-HTML responses (JSON/AJAX) to prevent HTML prepended to JSON output - Fix: Output buffering: Add wp_die_ajax_handler and wp_die_json_handler filters to properly handle AJAX die paths - Fix: Page cache: REST API responses no longer cached due to output buffering pipeline being skipped for non-HTML responses - Fix: Lazy load: Add debounced MutationObserver so images injected by AJAX plugins (e.g. FacetWP) are processed without requiring per-plugin integration; also fix async_head embed method not updating window.w3tc_lazyload to the live LazyLoad instance after initialization ## 2.9.2 - Fix: Patch broken access control for Image Service AJAX operations - Fix: mfunc dynamic output buffering fatal error causing blank pages - Fix: Patch mfunc security vulnerability ## 2.9.1 - Fix: Image Converter: Reset request when status is 404 - Fix: Image Converter: Better handling of separate format requests - Fix: Image Converter: UI/JS changes - Fix: Config caching/saving issue ## 2.9.0 - Feature: Next-Gen AVIF image conversion (Pro) - Feature: Added notices for some billing issues - Fix: Bunny CDN purge section - Fix: New Relic API - Fix: Nginx + Memcached Unix socket compatability - Update: Setup Guide Wizard and test improvements - Update: WebP Converter renamed to Image Converter ## 2.8.15 - Fix: Elementor: Carousel lazy load - Fix: Elementor: Cache clearing issues - Fix: Strip all mfunc/mclude tags from REST, feeds, and comments - Fix: Better validation for file directory cleanup - Fix: Bunny CDN: Settings page purge URL section - Fix: Minify: Auto JS: Handle async and defer attributes with values - Fix: Google PageSpeed: Lighthouse changes - Fix: Cloudflare: Undefined array warning - Fix: Rackspace API: Reponse code handling - Fix: License deactivation messages - Update: ChartJS updated to v4.4.1 - Enhancement: Added support links ## 2.8.14 - Fix: Better logic for mfunc/mclude processing - Enhancement: More consistent purge notices ## 2.8.13 - Fix: Sanitize mfunc/mclude content in REST calls - Fix: Resolved plugin check errors - Fix: Discard simplexml errors - Fix: Missing text domains - Fix: Ensure array type for filter "w3tc_footer_comment" - Enhancement: Image Converter: WP_Query optimizations ## 2.8.12 - Fix: Lazy load background-image style handing - Fix: Elementor: Also flush Object Cache after Page Cache is flushed - Fix: Canonicalize Cache read path to avoid variants ## 2.8.11 - Fix: Avoid redundant object cache misses in WP 6.4 - 6.7 - Fix: Admin bar: Do not show "Purge All Caches Except Cloudflare" if disabled after it was configured - Fix: Error handling for URL downloads - Fix: Menu items for non-administrators - Update: Lazy load library: 12.2.0 => 19.1.2 - Enhancement: Use SimpleXMLElement to parse sitemaps and RSS feeds - Enhancement: Flush Elementor cache when all caches are flushed ## 2.8.10 - Fix: Exception handling on activation - Fix: wp_resource_hint handling for arrays - Enhancement: Added X-W3TC-CDN header ## 2.8.9 - Fix: AWS S3 test - Fix: Gravity Forms submissions - Fix: Windows: Configuration import - Fix: Redis: Fix PHP 8 warning for incrBy value not being an integer - Fix: DbCache Cluster: Check for mysqli_result before using the object - Fix: PHP 8 warnings - Fix: Typos on settings pages ## 2.8.8 - Fix: Usage Statistics JavaScript error - Fix: Regex matching for Cookie Cache Groups - Fix: Image Service: Error when get_current_screen() is run before admin_init - Fix: _load_textdomain_just_in_time timing issue for WP-CLI and the Setup Guide - Fix: "DOMDocument::loadHTML(): ID already defined in Entity" errors - Fix: Cloudflare: Saving settings with a value of 0 - Update: Removed StackPath, Limelight, and Highwinds CDNs due to end of service ## 2.8.7 - Fix: Exit survey email field submission - Fix: Setup Guide analytics - Update: Allow deleting plugin data when skipping the exit survey on deactivation - Update: aws/aws-php-sns-message-validator (1.9.0 => 1.9.1) ## 2.8.6 - Fix: Error deactivating when selected to delete plugin data - Fix: WP-CLI: Enable Object Cache depending on settings - Fix: Delete all plugin WordPress Options if selected on deactivation - Enhancement: Automatically disable Object Cache after plugin update if set to Disk and display a notice - Enhancement: WP-CLI: Added settings to enable Object and DB Cache for WP-CLI - Enhancement: Added an email field to the exit survey for requesting help - Enhancement: Added a popup modal to accept the risk when enabling Object Cache using Disk ## 2.8.5 - Fix: CDN: Amazon S3 long hostname for default region - Fix: WP-CLI: Error running "wp w3tc alwayscached_*" commands - Fix: WP-CLI: Remove HTML in output - Enhancement: Simplified license messaging ## 2.8.4 - Fix: Deactivation modal JS error ## 2.8.3 - Fix: HTTP API calls for checking required files - Fix: script-src-elem and style-src-attr security headers - Fix: Handle multiple line srcset attributes for CDN URL replacement - Fix: Fragment Cache: Fixed logic for navigation links - Fix: Check for modified advanced-cache.php dropin/addin file - Fix: Log directory name is made unique - Enhancement: Added an exit survey with option to delete plugin data on deactivation - Enhancement: Fragment Cache: Added notices for configuration - Enhancement: Use admin-ajax for settings help tab content links - Update: Handle XML MIME types in cache by default - Update: Added "immutable" options for cache-control headers - Update: Added WP-CLI command descriptions - Update: CDN widget notices for BunnyCDN - Update: Image Converter widget notice ## 2.8.2 - Fix: Added additional user capability checks - Fix: Ensure Object Cache garbage collection (disk) WP Cron event is scheduled - Fix: Added additional checks when loading the Object Cache dropin - Fix: Disable Database, Object, and Fragment Cache when using WP-CLI - Fix: Object Cache debug logging - Fix: FAQ help tabs - Update: Coding standards ## 2.8.1 - Fix: Ensure WP Cron events get scheduled when using the Setup Guide wizard and on upgrade - Fix: Undefined variable when the Object Cache purge debug log is enabled - Update: Added warnings in the Setup Guide and the General Settings page when using Disk for Database and Object Caches - Update: Skip Database and Object caches when using WP-CLI ## 2.8.0 - Feature: Always Cached extension - Feature: Purge caches on WP-Cron schedules - Fix: Cloudflare: Some settings were not saved correctly - Fix: Check and update file mode/permissions for cache files - Fix: Issue prompting for credentials for some non-direct filesystem types - Enhancement: Added an admin notice if WP-Cron is not functioning correctly - Enhancement: Added Browser Cache filters - Update: Upgraded JSMin library to 2.4.3 - Update: Added Premium Services tabs ## 2.7.7 - Update: CDN: Added support for Microsoft Azure EntraID Managed identities ## 2.7.6 - Fix: Improved cache flushing on actions/updates - Fix: Google PageSpeed authorization - Fix: Remove Fragment Cache link if extension is disabled - Fix: License status fix - Fix: Statistics PHP warning when some data is stale - Fix: API improvement for non-200 responses - Enhancement: Added notices when choosing Disk for object and database cache engines - Update: Object cache improvements - Update: Allow WPML extension activation for TranslatePress - Update: Added more information for selections in the setup guide wizard - Update: Updated cache header directive choices (no-cache/no-store) - Update: Nginx configuration examples ## 2.7.5 - Feature: Added dismissible notifications - Fix: PHP error in Page Cache when deleting media - Fix: PHP warning in Page Cache when modifying an attachment - Update: Added additional default query strings for page cache exemptions - Update: Removed obsolete Google PageSpeed metrics - Update: Condensed Google PageSpeed proof block format for certain settings/features - Update: Added missing Google PageSpeed score block for PageCache Lazy Loading Google Maps setting on General Settings page ## 2.7.4 - Fix: WP-CLI get option output for array type - Fix: Remove CSS/JS URL matching - Fix: Nginx rules for feature and permission policies - Fix: Redis connect port for unix sockets error - Update: Newsletter in footer is now a link to a working form - Update: Added JSON type for WP-CLI get/set option - Update: Added config export for WP-CLI - Update: Added content matching option for Remove CSS/JS individual entries - Update: Updated Google PageSpeed score block appearance for cleaner UI - Update: Added Google PageSpeed score block for PageCache Lazy Loading Google Maps setting - Update: Added Google PageSpeed score block for Minify Eliminate Render Blocking CSS option ## 2.7.3 - Fix: Page Cache: File Cleaner now uses the correct expiration setting - Fix: PHP 8.1 warnings for Redis connect - Fix: Google ChartJS error - Update: Bumped PHP minimum version to 7.2.5; added support for up to PHP 8.3 - Update: AWS SDK PHP dependency updated to 3.314.2 - Update: Microsoft Azure Storage SDK PHP dependency updated to 1.5.4 (blob) and 1.5.2 (common) - Update: Several other PHP and NodeJS dependencies updated - Update: Made improvements to the Remove CSS/JS feature - Update: Removed the newsletter sign-up popup and added it in the footer - Update: Added use-case proof and links to settings pages - Update: Changed CDN default to none and updated the StackPath EOL notice ## 2.7.2 - Fix: Page Cache cleanup purging all if browsercache.html.lifetime > W3TC_CACHE_FILE_EXPIRE_MAX - Fix: Page Cache primer: Ignore sitemap XML comments - Fix: Page Cache primer: Preload cache for custom post types - Fix: Page Cache primer: Add an option to prime cache after updating a post/page/CPT - Fix: Redis test logic - Fix: Cloudflare extension: Setting values via API - Fix: Amazon SNS message validation - Fix: Handle XML setting being saved properly - Update: Add more options to the Remove CSS/JS feature - Update: Add an option for Amazon CloudFront default region in distribution hostname - Update: Add information about feature impact on PageSpeed - Update: Reworked the Page Cache Preload settings UI ## 2.7.1 - Fix: Page Cache: Prefer Brotli over Gzip - Fix: Page Cache: Purge sitemaps on post creation/edit/trash/delete - Fix: Page Cache: Processed content filter - Fix: Minify URL to filename filter mapping - Update: Added Bunny CDN partner information - Update: Added filters for Apache rules and Page Cache postfix ## 2.7.0 - Feature: Performance Dashboard update - Feature: Remove unused CSS/JS - Fix: Nginx feature and permission policy header syntax - Fix: Memcache install check - Fix: CloudFront purge button - Fix: Uncaught type error on the install page - Fix: Page mapping data - Fix: Add missing id for a save settings button - Fix: Extension counts - Fix: PHP 8.2 deprecation warnings for dynamic class property assignments - Fix: Do not autoload WP option for PageSpeed data - Fix: Cache groups: Fix spacing in values for htaccess syntax - Fix: Refactor Minify cache key mapping to have shorter keys and separate storage - Fix: Minify statistics output and PHP warnings - Fix: Feature Showcase: New feature version numbers - Fix: Lazy Loading URL pattern match - Update: Upgrade modal/popup - Update: Added "Learn more" links ## 2.6.1 - Fix: Image Converter extension activation - Fix: Media Library upload may fail when using Bunny CDN - Fix: Cloudflare API error when updating certain settings - Fix: Lazy Loading issue with the Delay Scripts feature enabled - Update: Allow custom hostname changes for Bunny CDN ## 2.6.0 - Feature: Added support for Bunny.Net CDN - Feature: Preload requests (Pro) - Fix: Error when changing CDN cookie domain setting - Fix: Admin notice when flushing cache from the admin bar - Fix: Error in some Minify cache file operations - Fix: PHP 8 compatibility - Update: Delay scripts UI changes ## 2.5.0 - Feature: Added Delay Scripts (Pro) - Fix: Several PHP 8 warnings - Fix: Fragment Cache extension PHP warnings when no engine was selected - Fix: Fragment Cache engine selection disabled for pro license under certain conditions - Fix: Added Database Cluster compatibility for older db.php files - Fix: Fixed one PageSpeed tool metric not outputting data and adjusted a few labels - Fix: Multiple anchor links for PageSpeed block on General Settings page - Fix: Cache Groups validation on save - Fix: Cache Groups delete button not working for added groups - Update: Renamed Image Service feature to Image Converter - Update: Added Image Converter block to General Settings page along with link to navigation bar - Update: StackPath CDN prices (Service ending November 22, 2023 and will be replaced by Bunny CDN in future update) ## 2.4.1 - Fix: Add a fallback for the older version of wp-content/db.php ## 2.4.0 - Feature: Added filter "w3tc_config_item_objectcache.enabled" to allow for disabling W3TC object cache - Fix: Auto-apply W3TC Pro license after purchase via in-plugin purchase/upgrade buttons - Fix: PHP 8 warnings for Page and Fragment caches - Fix: Replaced delete_blog deprecated hook with wp_uninitialize_site and wp_update_site - Fix: Database Cluster configuration file save issue - Fix: Fragment cache will now be disabled for non-pro users instead of being only disabled on the front-end - Fix: Premium services widget list is now synced with the support page - Update: User interface updated for cleaner appearance and easier navigation and control - Update: Added support for get/set/add/delete wp_xxx_multiple methods to Object cache ## 2.3.3 - Fix: Fragment Cache: Fatal error when displaying registered groups - Fix: PHP 8 deprecation warnings in the SNS Message Bus and NuSOAP libraries - Fix: Broken nonce for renewal form - Fix: Page Cache: Moved hardcoded query string exemptions to the settings page - Update: Redis and Memcached host/IP/domain configuration examples ## 2.3.2 - Fix: Correct interpolation of a symlinked cache directory - Fix: Memcached test using SASL authentication - Fix: Multi-site authorization request returning to incorrect URL ## 2.3.1 - Fix: PHP 8 compatibility: Invalid return type if Browser Cache is disabled - Fix: Added AWS SNS message classes (aws/aws-php-sns-message-validator) - Fix: PageSpeed service: messages and escaping - Fix: Image Service meta query handling - Update: Dependency version updates - Update: Content-Security-Policy (CSP) and Content-Security-Policy-Report-Only (CSPRO) header field configuration ## 2.3.0 - Feature: PageSpeed Insights reports and performance page widget - Feature: Added basic OpenLiteSpeed support - Feature: Add Permissions-Policy to mirror Feature-Policy directives - Fix: PHP 8.2 compatibility - Fix: GuzzleHttp 7 conflict with Azure - Fix: Allow object cache updates when using WP-CLI - Fix: Added missing Page Cache configuration "host" value - Fix: Missing on_comment_status action callback - Fix: Flush cache on attachment update - Fix: Varnish flush for posts - Update: Improved comment status logic for flushing database and object caches - Update: Adjusted FTP form style - Update: Removed deprecated MaxCDN and NetDNA components and added a notice if one was used - Update: Removed deprecated FeedBurner ## 2.2.12 - Fix: Comment status change error - Fix: Varnish flush post arguments ## 2.2.11 - Fix: Error when flushing page cache after an attachment update ## 2.2.10 - Fix: Optimized and fixed object cache flushing - Fix: Scheduled post page cache flushing - Fix: Admin bar flush cache for current page with disabled purge policy - Fix: Loop when disabling Minify HTTP/2 push setting - Fix: Extension admin notice missing links - Update: Removed custom translation files ## 2.2.9 - Fix: Reset our textdomain for translations ## 2.2.8 - Fix: Escape output in compatibility checker, minify, and New Relic pages - Fix: Admin notice buttons on non-plugin pages - Fix: Namespace on exception type in a minify class - Fix: Translation issues due to hooks and typos - Fix: Broken JavaScript in admin_print_scripts calls when language is not English - Fix: Deprecated warnings in JS and CSS minify - Update: Translation files ## 2.2.7 - Fix: Updated database cache connection class to avoid deprecated warnings in WordPress 6.1 - Fix: Redis: Fixed handling of retry interval and timeout options for usage statistics - Enhancement: Redis: Added TLS/SSL certificate verification option - Enhancement: Page cache: Added query string exemptions ## 2.2.6 - Fix: Error clearing all cache when using CloudFront full CDN in Pro ## 2.2.5 - Fix: Revert WooCommerce Variation Image Gallery plugin CDN filter - Fix: DB cache syntax error in PHP 5.6 - Fix: Added missing space to S3 CDN bucket label - Fix: JS error for CloudFront CDN related check on non-W3TC pages - Fix: Page cache unpack warning for empty/malformed files - Enhancement: Image Service pre_get_posts anonymous action now hooked (w3tc_modify_query_obj) - Enhancement: Image Service ajax_query_attachments_args anonymous action now hooked (w3tc_filter_ajax_args) ## 2.2.4 - Fix: Extensions URL in settings - Fix: Redis undefined array key warnings - Fix: Redis connect issue based on phpredis version - Fix: Sanitization of licensing messages - Fix: DB cache error in Ajax - Fix: Call to undefined function in DB cache query class - Fix: PHP 8 compatibility: join - Fix: WooCommerce Variation Image Gallery plugin CDN filter - Enhancement: Add setting for AWS S3 public objects in ACL - Enhancement: Check if post is empty before cache flush - Enhancement: Add max lifetime setting for non-disk page cache - Enhancement: Add notice when selecting CDN using CloudFront - Update: CSS Tidy 1.7.3 => 2.0.1 - Update: Add sns-message-validator - Security: Ensure cache writes in cache folders ## 2.2.3 - Fix: Redis Cache: Removed exception on warnings - Fix: Compatibility check for WP_CACHE - Fix: Flush all cache cache except Cloudflare button - Fix: License terms update notice escaping - Fix: Feature Showcase: Image Service activate button - Security: Updated guzzlehttp/guzzle to 6.5.8 ## 2.2.2 - Security: PHPCS and WPCS updates - Security: Updated guzzlehttp/guzzle to 6.5.6 - Security: Updated guzzlehttp/psr7 to 1.8.5 - Fix: Cloudflare flush all cache - Fix: Access log test - Fix: Better handling for PHP 5.6 - Fix: Convert Redis warnings to exceptions - Fix: WordPress 5.5 image lazy loading - Fix: Infinite loop when using database cluster configuration - Fix: Database cluster logic - Fix: FTP credentials form - Fix: Preview deploy button - Fix: Image Service links in multisite network admin - Fix: Enable Image Service settings changes in multisite blog/sub sites - Enhancement: Updated Cloudflare settings to allow a global API key or token - Enhancement: Added Cloudflare CDN public objects option to settings - Enhancement: Added timeout settings for Redis - Enhancement: Added TLS/SSL certificate verification option for Redis - Enhancement: Added Image Service visibility option - Enhancement: Updated Image Service limit notification - Enhancement: Better handling of trailing slash URLs - Update: Adjusted lightbox for accessibility - Update: Removed deprecated opcache flush ## 2.2.1 - Fix: Cloudflare: Removed use of the retired ip_lkup V1 endpoint - Fix: Prevent error in some environments using non-direct filesystems - Fix: Added better checking for some filesystem actions - Fix: AWS CloudFront: Reverted async change for cache invalidation to honor promises - Enhancement: Added option to exclude minified JS files from being processed by Rocket Loader - Enhancement: Improved handling of Image Service rate-limiting and error messages ## 2.2.0 - Feature: Image Service extension: WebP conversion options ## 2.1.9 - Fix: Cloudflare Dashboard Widget: Updated to use GraphQL - Fix: Cloudflare Dashboard Widget: Use WordPress timezone - Fix: CDN: Execute purge only if hosting is enabled, to prevent unneeded delays - Fix: Published/modified custom posts not clearing the archive cache(s) - Fix: Native WordPress sitemap caching - Fix: Extra MIME groups other than controlled by settings were added to rules - Fix: Usage Statistics: Not functioning when object cache is set to Redis - Fix: AMP Extension: Prevent popup admin bar for endpoints - Fix: Setup Guide Wizard: CSS for long translations - Fix: Opcache Settings: Validate timestamp indicator checkbox - Update: Remove robots.txt cache toggle setting - Enhancement: Impove 404 detection - Enhancement: Improved compatibility check indicators - Enhancement: AWS CloudFront: Faster cache invalidation using async ## 2.1.8 - Fix: Corrected handling of robots.txt (file and filter) ## 2.1.7 - Fix: Corrected relative paths used in the JS minify YUI Compressor - Fix: Disallow crawling of cache directory - Fix: Responsive display for the dashboard - Enhancement: Added lazy load threshold setting - Enhancement: Added feature policy security headers to settings ## 2.1.6 - Fix: JS minify issue with template literal backticks - Fix: Do not redirect when using WP-CLI - Fix: Missing whitespace in Memcached Nginx configuration - Fix: Setting for CDN over passive FTP - Fix: Updated CDN Minify regex - Fix: Added missing text domains and fixed translations - Enhancement: Allow default AWS credentials provider - Enhancement: Added error logging when minification base URL is not found ## 2.1.5 - Fix: Sanitize extension argument ## 2.1.4 - Fix: Use Memcached server from config for Nginx rules instead of localhost - Fix: Allow more characters in CDN hostname sanitization - Fix: Added missing textdomains for Browser Cache settings - Fix: Avoid a possible PHP warning in LazyLoad mutator - Enhancement: Added a filter w3tc_cdn_cf_flush_all_uris for CloudFront purging ## 2.1.3 - Fix: Authenticated Persistent XSS & XFS in CDN admin page - Update: AWS library version 3.183.0 - Update: Minify: Include theme template files using page_* filenames ## 2.1.2 - Fix: Skip removing spaces around "" tags in HTML Minify - Fix: Updated admin URL logic for multisite installations - Fix: TransparentCDN purge URL validation - Fix: Added an option to use ABSPATH as the document root for Minify - Fix: Database cache debug message - Update: Added regions for AWS S3 (af-south-1, cn-north-1, cn-northwest-1, eu-south-1) - Update: Added MIME types AVIF and AVIFS for Browser Cache rules - Update: Enhanced "get_pagenum_link" filter - Update: Removed "comment" from the non-persistent object cache group ## 2.1.1 - Fix: Move Minify library to a namespace to avoid conflicts with other plugins - Fix: Check for AWS before loading functions - Fix: Update Minify ClosureCompiler base URL; use HTTPS - Fix: Corrected getting the network siteurl - Fix: Prevent PHP warning in CurlFactory - Update: Added information links to general minify options - Update: Added video/ogg support for browser caching ## 2.1.0 - Feature: Added a Feature Showcase to highlight new and existing features - Update: Consolidated cache groups settings pages - Update: Replaced deprecated jQuery method for WordPress 5.6 - Fix: PHP warnings for sprintf placeholders in PHP 8 - Fix: PHP deprecated warnings in PHP 8 - Fix: Browser Cache Quick Reference Chart link - Fix: Bad nonce in help - Fix: Google Drive CDN JavaScript ## 2.0.1 - Fix: Corrected redirection logic for the new Setup Guide - Fix: Fixed JavaScript w3tc_ga error ## 2.0.0 - Feature: Added the Setup Guide wizard for onboarding - Update: Updated jQuery compatibility and methods deprecated in WordPress 5.6 - Fix: Browser Cache: Fixed ExpiresByType code; changed from modified time to client access time ## 0.15.2 - Fix: Minify: Do not remove quotes around meta tags - Fix: Minify: Removal of spaces in calc function was breaking CSS - Fix: Browser Cache: Query string was not added to prevent caching after setting changes - Fix: Avoid warning when sending an empty URL for purging - Update: Added a filter for minified JavaScript content - Update: Minify: Added options for minify only got both JS and CSS in auto mode ## 0.15.1 - Fix: Fixed Memcached flush logic - Fix: Remove disk enhanced rewrites when disabling page cache - Fix: Better handle conflicts on activation ## 0.15.0 - Feature: Added TransparentCDN full-site delivery option - Fix: Update settings on activation in a changed environment - Fix: Fixed a compatibility check for Apache when PHP is running as CGI - Fix: Always set HSTS headers in Apache; not only for 2xx HTTP codes - Fix: Implemented anatomic incrementing of key version in Memcache(d) - Update: Allow filtering of w3tc_minify_url_for_files Minify URL for files ## 0.14.4 - Fix: Cleanup widget and postbox display for WordPress 5.5 - Fix: Update to PageSpeed API v5, show webvitals metrics - Fix: Console error when adminbar is hidden and PageSpeed module is active - Fix: Stats view JS issue - Fix: Deprecated jQuery warnings - Fix: Require files for request_filesystem_credentials() call - Added option to disable jquery-migrate on the front-end. Fixed #172 master (#240) ## 0.14.3 - Fix: Take "Accepted Query Strings" into account when "Cache query strings" enabled - Fixed typo in variable for lazy loading - Update: Add lazy load Google Maps reference to the general settings page - Update: Support background-image: together with background: for lazy loading ## 0.14.2 - Fixed WP-CLI redirect issue in multisite - Fix: Avoid PREG_JIT_STACKLIMIT_ERROR in minify - Fix: Prevent empty needle PHP warning - Update: Allow to specify URIs with a query string in Additional Pages ## 0.14.1 - Fixed CSS minify URL rewrite logic that affected some lazy loading and CSS URL addresses using protocols ## 0.14.0 - Added lazy loading for Google Maps - Added a filter w3tc_minify_css_content for minified contents - Fixed a minify regex issue in non-Unicode websites - Fixed a PHP notice in WPMU: accessing array offset on null - Fixed a minify issue where embedded CSS URL fragments were converted incorrectly - i18n improvement - Changed default to disabled for wp-admin requests in the object cache ## 0.13.3 - Fixed HTML minification of img elements containing embedded SVG strings - Removed an identifying value for GDPR ## 0.13.2 - Fix: Don't store content of HEAD requests - Updated informational URL on page cache static page comments ## 0.13.1 - Fixed php warnings in PgCache_ContentGrabber.php ## 0.13.0 - Added new Pro feature, Debug - Purge Stack Trace - Added "Feature Policy" security header - Removed deprecated get_magic_quotes_gpc() - Improved AMP Extension by ignoring value of amp querystring marker in request if passed without value in config - Improved lazyload by not processing elements with skip-lazy class or data-skip-lazy attribute - Fixed caching of query-string normalization redirects, no longer cached when cache key is normalized by accept querystring arguments, caused redirect loop ## 0.12.0 - Added querystring based URL structures for AMP pages - Added filter of minify options - Added lazyload picture tag support - Removed footer link "Support Us" option - Improved wp_die handling - Improved lazyload handling of content in script tags - Improved lazyload handling of feeds - Improved printing tags coming from feeds - Improved handling of modified posts before wp_rewrite initialized - Nginx rules changed a lot to avoid "location" block conflicts. That change may cause problems on some systems using non-default WordPress rules - keep a backup of your original rules - Improved handling of .htaccess files in regard to EOF - Fixed Varnish purging - Fixed html minification of data tags equaling 0 ## 0.11.0 - Added recommendation for BoldGrid's Total Upkeep plugin - Added new lazy loading feature - Removed New Relic extension by default for new installations - Updated usage of html minification and quote removal - Improved memcached config and added optional binary protocol setting - Improved process of renewing expired licenses - Improved page cache purging - Improved FAQ link by opening in new window - Improved detection of detect_post_id - Improved REST caching in relation to cache headers like X-WP-* - Improved Vary User-Agent header usage - Improved various features with AMP pages and HTTP2 - Improved redis connection string to allow for tls://host:port format - Fixed file headers for CloudFront S3 CDN - Fixed fatal error on with flush / SNS - Fixed comments with URLs within minify debug mode - Fixed ObjectCache statistics within footer - Fixed temporary hotfix with wp_die and regular output - Fixed fragment cache header link - Fixed flushing of /feed and /feed/ cache - Fixed js error in widget - Fixed fatal cache flush error caused by empty $wp_rewrite - Fixed path for file_generic REST caching on non-default port - Fixed test minify button with Closure Compiler engine ## 0.10.2 - Fixed compatibility with wpdb::prepare in WordPress 5.3 ## 0.10.1 - Fixed slowdown in memcached engine - Fixed Purge Cache menu links so they flush current blog in WPMU - Fixed error during upgrade, "Call to undefined method W3TC\Util_Content::is_database_error" - Updated Redis cache engine to avoid "Function Redis::delete() is deprecated" warning ## 0.10.0 - Improved Statistics component for pro users - Improved support for CloudFront distributions with multiple origins - Improved redirects by using safer wp_safe redirect - Improved .htaccess usage when pagecache does not require it - Improved protection of unexpected values in global variables - Added more Amazon S3 regions - Added support for memcached binary protocol when available - Added caching for WebP MIME type - Updated S3 bucket creation by settings CORS policy - Updated blogmap to allow urls with custom ports - Fixed usage of base url with minify - Fixed mixing content of sync & async scripts with minify - Fixed S3 + CloudFront urls when CNAMEs not used ## 0.9.7.5 - Updated AWS library - Added support of set_sql_mode by dbcluster - Improved support for webserver running on non-default port with disk-enhanced - Improved menu icons - Fixed php warning when remote service cannot be loaded - Fixed php warnings on support page ## 0.9.7.4 - Fixed PHP warning when Redis integration not configured correctly - Fixed 404 in multisite caused by subdirectory issue - Fixed object cache issue in multisite where object cache was cleared at wrong time - Fixed database cluster in WordPress 5.1 - Fixed warning caused by user agent theme change used - Fixed minification in multisite when URLs were set to root-blog based url - Fixed undefined w3tc_ga issue - Improved purging of current page by using post_id instead of URL - Improved cache delivery of /feed URLs - Improved security on calls to opcache flush - Improved minification of files in environments running on non-default ports ## 0.9.7.3 - Fixed caching of redirect responses based on empty response body - Improved compatibility with WordPress 5.1 - Improved transports, unix: prefix not required - Improved minify html ## 0.9.7.2 - Fixed fatal error during media file upload with CDN module active - Fixed removal of empty values, JSON encoded string in attribute, trailing quote at end of tag, and the handling of anchors in HTML minify - Fixed undefined index warning - Fixed fatal error when purging CDN using full site delivery ## 0.9.7.1 - Fixed undefined variable notice - Fixed "No such file or directory" warning - Fixed writing to PHP error log rather than WordPress debug log - Fixed default referrer policy should be "no-referrer-when-downgrade" - Fixed php_flag error related to browser cache, using ini_set instead - Fixed Cloudflare IPv6 check undefined offset - Fixed Undefined constant WP_ROOT - Fixed frame-ancestors being overwritten by frame-src - Fixed missing semicolon in nginx configuration - Fixed HTTP/2 URLs handling for browser cache and CDN modules - Fixed display of CDN debug information - Fixed CSS Minification with Google Fonts when included via "Include external files/libraries" and non-latin character-sets are loaded - Fixed media query string not updating when all caches were purged - Fixed double slash with ABSPATH if file exists - Fixed setting max-age and expires header simultaneously - Fixed SASL detection for PECL Memcached - Fixed handling of manually entered objects to be purged on CDN - Fixed query string handling in Nginx - Improved error handling with Cloudfront - Improved page cache logging - Improved multi-tenant support for memory-based caching engines - Improved CSS minification - Improved purge behavior for changed media objects when using CDN - Improved compatibility with sitemap plugins - Added support for Memcached for Nginx - Added support for caching webm files - Added Brotli HTTP compression support - Added StackPath full site delivery support - Added _wc_session_ to the list of ignored query stems for improved WooCommerce compatibility ## 0.9.7 - Fixed minified files not being hosted by CDN when enabled if "host minified files" is disabled - Fixed warning thrown when purge all was selected (via nigrosimone) - Fixed undefined offset error in fragment cache - Fixed MaxCDN test button failure when debug mode is enabled - Fixed purging of feeds when cache feeds option is enabled - Improved handling of errors when full site delivery isn't set - Improved nginx.conf to support xml caching - Improved nginx.conf to support HSTS for static files - Improved minify's handling of query strings - Improved database caching, frequent wp_options no longer flush posts or comments data - Improved Limelight Networks CDN integration - Improved FAQ, they're now hosted in the GitHub public repository - Improved handling for /* ## 0.9.6 - Fixed anonymous usage tracking, default to disabled - Fixed incorrect minify cache data written if target directory missing - Fixed empty minify cache file written when file locking enabled - Fixed missing commas in CSS (via nigrosimone) - Fixed typo in object cache engine (via Furniel) - Fixed incorrect reuse of redis connections when persistent connections option enabled - Fixed reliability of Google Drive (via jikamens) - Fixed handling of UTF-8 encoded files by writing them in binary (via jikamens) - Improved Full Site Delivery configuration user flow on the General and CDN settings screens - Improved content type matching and cache hits as a result - Improved minify file locking logic - Improved visual language of the compatibility test (via Furniel) - Improved configuration file management - Improved MaxCDN set up wizard - Improved page cache's accepted query string handling to handle optional values and add support for disk enhanced mode (via amiga-500, nigrosimone) - Improved handling of timeouts to origin push CDN providers - Added HTTP/2 push headers for disk enhanced page caching (via nigrosimone) - Added X-Forwarded-Proto header for use cases like HTTPS recognition behind proxies or load balancers - Added multiple CDN support i.e. static file objects and pages, posts, feeds, API responses etc to use different respective CDN providers - Added page caching by cookie name or value (sponsored by SQweb) - Added toggle for CORS header to improve inter-operatbility with various CDN providers - Added support for CDN hosted media to media library (inspired by amiga-500) - Added object caching of AJAX calls (via andyexeter) - Enterprise features are now available to Pro subscribers! Including reading from multiple databases concurrently and purging caches across multiple hosts via a Message Bus ## 0.9.5.4 - Fixed regression with browser caching and query strings ## 0.9.5.3 - Fixed handling of HTTP compressed documents in PHP v5.3 (via amiga-500) - Fixed a bug with accelerated mobile pages (via nigrosimone) - Improved reliability of minify in manual mode - Improved JavaScript interoperability with CDATA use cases - Improved file name generation on Windows for IIS servers - Improved handling of # in URLs - Improved handling of exclusions for e-commerce in Genesis Framework - Improved handling of headers for Microsoft Azure - Improved functionality with existing CloudFront Distributions when configuring Full Site Delivery - Improved minify debug logging - Improved handling of URLs that omit the protocol - Improved handling of custom files with CDN (via amiga-500) - Updated CSSTidy library (via nigrosimone and amiga-500) - Added Swarmify Video Optimization Extension [Hat tip the Swarmify Team] - Added flushing of AMP pages ## 0.9.5.2 - Fixed security issue by protecting configuration data by adding .php to relevant files - Fixed security issue with the creation of dot folders that could be abused - Fixed handling HTTP compression for uncached pages - Fixed handling of .svgz files - Added expiration headers to WebP images - Added support for Microsoft Azure’s latest API - Added ability to cache WP Admin. Recommended setting, is off. (Improved WP Admin performance with object caching enabled) - Added HTTP/2 Push support for minified files - Added option management support for wp-cli - Improved handling of uncompressed minified files - Improved handling of purging of modified pages / posts - Improved compatibility with Rackspace Cloud Files - Improved initial CDN configuration reliability - Improved reliability of object caching - Improved PHP 7.0 compatibility - Improved PHP 4.3 compatibility - Improved HTTP/2 support - Improved CSS embed handling - Improved reliability of object cache, transients now fallback to database - Improved handling of cached http compressed objects ## 0.9.5.1 - Fixed missing namespace, which caused issues with other implementations of Google APIs - Fixed handling Cloudflare zone list being incomplete for users with many zones - Added extension to support Accelerated Mobile Pages (AMP) - Added notification for users that are still using PHP 5.2 (end of life in 2011) - Improved default settings - Improved compatibility with Yoast SEO sitemap caching - Improved compatibility with Jetpack - Improved directory handling on IIS - Improved backwards compatibility for 3rd party implementations against legacy W3TC functions ## 0.9.5 - Fixed XSS vulnerability - Fixed issues with dismissing overlays - Fixed handling of tilde in URLs - Fixed issue with HTTP compression header when using mfunc calls - Fixed cache ID issue with minify in network mode - Fixed rare issue of caching empty document when some PHP errors occur in themes or plugins - Fixed caching of query strings - Added support for APCu Opcode Cache - Added support for Redis - Added support for Google Drive - Added support for Amazon S3-compatible storage services - Added support for PECL memcached - Added support for srcset elements - Added support for Rackspace CDN Origin Pull - Added support for minification of external fonts - Added support for WOFF2 font format - Added support for FTPS (FTP-SSL, S-FTP) - Added YUI Compressor's PHP Port of the CSS minifier - Added Narcissus' JS minifier - Added purge of parent page when attachments are added or updated - Added Highwinds CDN provider - Added "Validate Timestamps" option for compatible opcode caches functions like apc.stat are enabled - Added Full Site Delivery for Pro subscribers - Added HTTP Strict Transport Security (HSTS) support - Added a sample extension for developers to reference - Added Rackspace Cloud Files Multi-Region Support - Added more support for exclusions to database cache - Added more optionality to minifiers - Added WPML Performance Extension - Added use of [namespace](http://php.net/manual/en/language.namespaces.rationale.php) which creates minimum dependency on version PHP 5.3 - Improved PHP 5.6 compatibility - Improved PHP 7 compatibility - Improved performance menu in admin bar, including purging of specific cache engines and more - Improved SSL interoperability - Improved reliability of test buttons - Improved nomenclature of caching files for higher cache hit rates - Improved nginx compatibility - Improved WP CLI support - Improved Cloudflare compatibility (now using latest APIs), Cloudflare must be re-authorized - Improved AWS API compatibility (now using latest APIs) - Improved Rackspace Cloud Files compatibility (now using latest APIs) - Improved page cache purge for extensions like cloudflare and other reverse proxy use cases - Improved extension framework functionality - Improved compatibility of headers like ETag and content encoding - Improved template fragment caching - Improved notifications, warnings and errors - Improved mobile user agents detection - Improved security with nonces and form elements - Improved security throughout the codebase - Improved detail of debug messages - Improved Amazon SNS security (validation) - Improved minify's ability to match script tags without type attribute ## 0.9.4 - Fixed undefined w3tc_button_link - Fixed support and other form submissions - Fixed extension enabled key error - Fixed Test CDN errors - Fixed trailing slashes in custom wp content path and Minify - Fixed WP_PLUGIN_DIR not being available when object-cache.php is loaded and W3TC constant not set - Fixed Minify Auto and restructuring of JS code placement on page - Fixed remove / replace drop in file on plugins page - Fixed false positive check for legacy code - Fixed deprecated wpdb escape - Fixed Fragment Caching and APC anomalies - Fixed cached configs causing 500 error on interrupted file writes - Fixed readfile errors on servers with the functionality disabled - Fixed false positives for license key verification - Fixed debug information not printed on cached pages - Fixed backwards compatibility and flushing and added doing it wrong notification - Fixed "Prevent caching of objects after settings change" - Fixed "Use late init" being shown as enabled with Disc:Enhanced - Fixed missing param in APC cache method declaration - Fixed user roles property not begin an array - Fixed adding empty Vary header - Fixed notice on failed upgrade licensing check - Fixed Database Cache description text - Fixed duplicate bb10 agents - Fixed settings link in Minify Auto notification - Fixed notice with undefined constant - Fixed nginx configuration and Referrer, User Groups setting - Fixed Genesis settings and Suhosin field name limit error - Fixed Genesis and Fragment Caching (caching categories etc) - Fixed CDN being enabled when creating NetDNA / MaxCDN pull zone - Fixed NewRelic related notice in compatibility popup - Fixed trailing slash issue in filename to url conversion - Fixed issue with wp in subdirectory and relative minimal manual urls - Fixed issue with widget styling - Fixed issue with Purge All button action - Fixed issue with exporting of settings - Fixed issue with plugin interfering with preview theme - Fixed issue with malformed config files - Added caching of list of posts pages (tags, categories etc) to Genesis extension a long with flush it checkbox - Added typecasting on expiration time in object cache drop-in - Added capability check for save options - Added FeedBurner extension - Added woff support to Browser Cache - Added new Cloudflare IPs - Added support for WordPress defined charset and collate in CDN queue table creation - Added WordPress SEO by Yoast extension - Added *.less to CDN theme uploads and MIME - Added default settings for MaxCDN Pull Zone creation - Added call to change MaxCDN canonical header setting to match plugin setting - Added one button default pull zone creation to MaxCDN without refresh - Added MaxCDN authorization validation - Added whitelist IPs notification for MaxCDN - Added support for use of existing zones without refresh - Added new mime types - Added support for separate domains for frontend and admin backend - Added Cloudflare as an extension - Added nofollow to blogroll links - Added DEV mode support to PRO version - Added EDGE MODE functionality - Improved wrapper functions in plugins.php for plugin / theme authors - Improved reliability of NetDNA / MaxCDN API calls by using WP HTTP and not cURL - Improved Fragment Caching debug information - Improved preview mode, removed query string requirement - Improved FAQ structure - Improved empty minify/pgcache cache notification when using CDN - Improved default settings for MaxCDN zone creation - Improved CDN queue performance - Improved blogmap url sanitation - Improved MaxCDN automatic zone creation process - Improved license key saving and Pro mode activation on Pro license purchases - Updated EDGE MODE: Full site mirroring support for MaxCDN - Updated translations